[编辑器][BUG] prefab 越来越大? 可能因为残留的 cc.TargetOverrideInfo

  • Creator 版本: 3.5.0

    BUG: 如果 @property 引用了 prefab 实例内部的节点, 在组件代码中删除此 @property 之后, prefab/scene 的 json 文件中依然残留该属性对应的 cc.TargetOverrideInfo 记录.

    临时解决办法: 只能在 cc 编辑器中先 x 掉属性的值, 再删除代码中的属性.

    对于已经残留 json 的 scene/prefab, 则很难处理. 我的入口场景存在 200+行残留 json, 只好新建场景拷贝节点过去. 其它数十个 prefab 还不知道如何处理, 希望官方后面能解决这个问题.

  • 重现方式:

    1. (准备工作) 下载并打开项目 prefab_TargetOverrideInfo.zip (11.4 KB)


    2. (准备工作) 用代码编辑器打开 assets/scene.scene, 搜索 someProp 可以看到:

    3. (准备工作) 注释掉 NewComponent 中的 @property(Node) someProp, 回到 cc 编辑器刷新并保存场景
      截屏2022-05-13 22.19.41

    4. (BUG) 回到代码编辑器, 打开 assets/scene.scene, 搜索 someProp, 发现 对应的 TargetOverrideInfo 依然存在

    5. (BUG) 构建后检查生成的 Json, 发现记录依然存在
      截屏2022-05-13 22.43.33

1赞

感谢你的反馈,我们会尽快验证解决问题。

不要沉~ 这个问题有点严重…

似乎不止是残留 TargetOverideInfo, 还有其他残留问题. 可能都与删除代码中 @property 有关.

因为我发现入口 scene 会加载本不依赖的 prefab, 查看json 后发现, 是当初在场景里设计和测试过的 prefab (设计完已经拖出来并删除了场景里的节点, 但场景残留了对该 prefab 的引用)

1赞

离谱, 这种严重 bug 反而没人理会.

上面第一时间就关注了的,已经登记到了我们内部的工单系统,会在 3.6 修复,再次感谢详细的重现步骤!

3.6 依然没有修复…

故事是这样:

console 显示错误 uuid xxx 资源丢失 … 可是在编辑器中检查谁也没有引用它… 结果一 fgrep, 是残留在 prefab 文件中的引用…

这是一个曾经很大的 prefab, 随着时间推移, 逐步重构后节点越来越少,
现在只有 2 个节点, 结果居然有 187 KB ! ( 如果新建一个一样的 prefab, 只有 4KB …)

如果不是这个报错, 根本不会注意到这个问题如此严重…

别大惊小怪,这种问题多了去了,你见识不够

1赞

3.6.0有一堆的问题

麻烦提供一下你的预制体文件和实际打开时的截图,我看看是什么数据多出来了。

https://www.icloud.com.cn/iclouddrive/0a8ReNo57Tp8ARE3z6fZFxiwQ
我们在新版本中修复了该功能,大概会跟随新版本发布

1赞

:+1: 至少五个字符

建议提供一个clean功能,可以清空一些无效的配置

现在最新的 3.7 修复没有

3.7刚试了一下,在预制体对应的代码中,删除这个@property后,回到编辑器然后虽然会更新界面状态,但是在预制体中这个引用依然是存在的,一点要回到编辑后再次手动点击保存按钮,这个预制体中的这个引用才会消失,问下这个算是BUG吗

这个不是 bug,如果代码修改了,编辑器就要遍历所有场景或者 prefab,代价是很大的,也很容易因为误操作(比如代码合并、撤销)导致场景里的关联关系丢失。

那现在是,如果删除引用后,我们回到编辑器,如果使用 ctrl+s 保存后,这个引用依然是存在的,只有手动点击保存按钮,这个引用才会消失

这逻辑确实是有点无语~

好的,我们确认一下这个问题,感谢反馈

说到 快捷键与 GUI 不一致这个问题, 顺便反馈一个 bug:

mac 上编辑器几乎所有地方, “删除” 快捷键无效 (只能用菜单执行).

3.6 & 3.7 都是如此.不知道是不是只有我这里这样.

截屏2023-02-25 16.38.05