我项目掉进了3.0大坑

官方说,空了看看
prefab里,各种乱引用,各种不删除。
一个预制体文件,360K,拖到场景上,打散,再重新生成预制体,就编程180K

例如,添加个Button组件,设置了normalsprite,再改成NONE,该normalsprite的代码不会移除,仍然握着那个旧资源。prefab的脚本引用了另外一个prefab,即使移除,它也仍然握着。
甚至prefab里,会莫名其妙的引用scene,camara。
有很多parent为空的元素,却被别的元素所持有,命名每个元素都有个id字段,结果却不使用,为了性能,依赖于数组的索引来进行查找,结果就是A引用了BCD,结果E跑来说,我的老大是A,C说,我没有老大。
我尝试写脚本对其进行清理,折腾了一天,结果失败了,里面的关系太乱了,里面竟然发现了预制体握有SCENE,CAMRA…
场景脚本组件握了另外一个prefab,然后删掉这个prefab,json里仍然有那个prefab
这些都是不读prefab的json文件,看不出来的,你让我们怎么玩

1赞

3.x就是步子迈的太大扯着蛋的典范,先不说是不是对3D支持更好,基础功能就一堆bug,都影响正常使用了——新功能再好、3D性能再牛逼,基础不夯实就是一盘废料

2赞

周经贴重现江湖。

其实啥都好,怪就怪在没有10亿美金的投入。现在的情况是处于几百万美金勾引10亿美金的过程中。

2赞
  1. parent为空的元素,会被别的持有,是对Prefab在场景中实例化后,额外添加的元素,因为这个元素不能存在Prefab资源里(否则会改变Prefab原始资源),然后因为Prefab是动态加载的,所以它在序列化时候是不知道它的parent是挂在谁身上的,需要别的信息(Prefab相关的数据)来告诉它要挂在哪个节点下。

  2. 预制体握有SCENE,CAMRA…应该是比较老的一个Bug了,你是在哪个版本做的Prefab有这个问题?能有什么操作复现吗?

关于第二个问题,.我是从3.0最初的版本一路升上来的,之前就出现过prefab的脚本覆盖了scene的问题,然后只能把scene还原,不知道是不是那时候起,这个prefab就出现问题了。
关于第一个问题,我是想知道,有没有什么办法清理我的prefab,不然,我只能重做了,现在就是不知道有多少prefab有问题。
在我上次提的那个bug贴的附件里,就有那个问题prefab.
没分析完,实在分析不下去了。里面搜索就能搜到多个同名节点,例如:topNode和daily_task_panel,其中daily_task_panel还是预制体的名字,也就是根节点

大佬你的昵称·········
好巧

extensions.zip (92.8 KB)
我这原来写了一个简单的场景和Prefab的节点树展示插件,应该有助于你分析场景数据~

1赞


:rofl:


运行时,看起来是好的,渲染的各个节点也是对的

资源感觉就是uuid的锅,各种不更新。
以前做cocosstudio就没发生过这种情况

不是uuid的问题

大佬头像比你叼

打开面板后再选中Prefab或场景应该能显示数据


json阅读器:joy:

不过,这个有助于快速识别出有问题的prefab

Prefab,特别是嵌套的Prefab,实现起来会遇到各式各样的坑,目前在一步步填坑 :cry:。所以目前的保守策略是尽量少删除数据,因为可能不小心删除就回不来了。

工具不错,可以删改,我先用用
你们要尽快啊,我们项目要上线了啊

这个工具也可能有Bug,如果要删除数据,要记得做好备份。。。

1赞

发现了bug,100%重现,你们要不要看下
我有个prefab,用你的插件看起来没什么问题
然后我删除其中一个sprite节点,prefab数组的大小就由171增加到了345.
再用插件看,就明显不对了。
image
百分百重现

1赞

这个[63]的数据看起来是个错误数据,这是把查看Prefab而临时生成的一个场景都给序列化进去了。