-
Creator 版本: 3.5.0
BUG: 如果 @property 引用了 prefab 实例内部的节点, 在组件代码中删除此 @property 之后, prefab/scene 的 json 文件中依然残留该属性对应的
cc.TargetOverrideInfo
记录.临时解决办法: 只能在 cc 编辑器中先 x 掉属性的值, 再删除代码中的属性.
对于已经残留 json 的 scene/prefab, 则很难处理. 我的入口场景存在 200+行残留 json, 只好新建场景拷贝节点过去. 其它数十个 prefab 还不知道如何处理, 希望官方后面能解决这个问题.
-
重现方式:
-
(准备工作) 下载并打开项目 prefab_TargetOverrideInfo.zip (11.4 KB)
-
(准备工作) 用代码编辑器打开
assets/scene.scene
, 搜索someProp
可以看到:
-
(准备工作) 注释掉
NewComponent
中的@property(Node) someProp
, 回到 cc 编辑器刷新并保存场景
-
(BUG) 回到代码编辑器, 打开
assets/scene.scene
, 搜索someProp
, 发现 对应的TargetOverrideInfo
依然存在
-
(BUG) 构建后检查生成的 Json, 发现记录依然存在
-
感谢你的反馈,我们会尽快验证解决问题。
不要沉~ 这个问题有点严重…
似乎不止是残留 TargetOverideInfo, 还有其他残留问题. 可能都与删除代码中 @property 有关.
因为我发现入口 scene 会加载本不依赖的 prefab, 查看json 后发现, 是当初在场景里设计和测试过的 prefab (设计完已经拖出来并删除了场景里的节点, 但场景残留了对该 prefab 的引用)
离谱, 这种严重 bug 反而没人理会.
3.6 依然没有修复…
故事是这样:
console 显示错误 uuid xxx 资源丢失 … 可是在编辑器中检查谁也没有引用它… 结果一 fgrep, 是残留在 prefab 文件中的引用…
这是一个曾经很大的 prefab, 随着时间推移, 逐步重构后节点越来越少,
现在只有 2 个节点, 结果居然有 187 KB ! ( 如果新建一个一样的 prefab, 只有 4KB …)
如果不是这个报错, 根本不会注意到这个问题如此严重…
别大惊小怪,这种问题多了去了,你见识不够
3.6.0有一堆的问题
麻烦提供一下你的预制体文件和实际打开时的截图,我看看是什么数据多出来了。
至少五个字符
建议提供一个clean功能,可以清空一些无效的配置
现在最新的 3.7 修复没有
3.7刚试了一下,在预制体对应的代码中,删除这个@property后,回到编辑器然后虽然会更新界面状态,但是在预制体中这个引用依然是存在的,一点要回到编辑后再次手动点击保存按钮,这个预制体中的这个引用才会消失,问下这个算是BUG吗
这个不是 bug,如果代码修改了,编辑器就要遍历所有场景或者 prefab,代价是很大的,也很容易因为误操作(比如代码合并、撤销)导致场景里的关联关系丢失。
那现在是,如果删除引用后,我们回到编辑器,如果使用 ctrl+s 保存后,这个引用依然是存在的,只有手动点击保存按钮,这个引用才会消失
这逻辑确实是有点无语~
好的,我们确认一下这个问题,感谢反馈
说到 快捷键与 GUI 不一致这个问题, 顺便反馈一个 bug:
mac 上编辑器几乎所有地方, “删除” 快捷键无效 (只能用菜单执行).
3.6 & 3.7 都是如此.不知道是不是只有我这里这样.