V2.0.9 打开 prefab 时报错 object already destroyed

如题,我搜索到论坛里有不少人在问这个问题,但是一直没有解决方案。
偶发,不能稳定重现,一旦某个预置体打开时爆了这个错,那么整个工程的任意一个预置体打开都爆这个错。

https://forum.cocos.com/t/prefab-object-already-destroyed/67024/17

↑ 这个帖子 里的解决方案都试过了,问题依旧。
我发现,一旦某个工程出现了这问题,就会一直报错:
1、把预置物体拖回场景里,还原普通节点,删除预置物体,再把普通节点拿回去变预置物 —— 没用。报错依旧。
2、删除所有的预置物,重做——仍然没用。

我的工程里之前有预置物嵌套预置物的做法,不知道是不是这个做法引起了问题。
但是我重做了工程,没有预置物嵌套,偶尔还是出现。

目前我无法稳定重现这个问题,也不知道是什么操作引起的。
目前不影响游戏业务逻辑,但是看到控制台输出错误有点慌。

1赞

当有多个场景时,
在场景1编辑预置体
然后立刻切换到场景2,
也会爆这个错

谢谢反馈,刚刚一直测试没出现,我试看看

好尴尬 :innocent:,按照你说对方法还是没办法重现。。。能否录制个视频给我呢?

好,请稍等。我录个视频。
1、这里是出错的那个工程:
https://pan.baidu.com/s/1ZhrRw7Ureg5qKJY5H9EvVg
提取码:997u

2、这里是我新建的工程:
链接: https://pan.baidu.com/s/1kJ79hg1i5E6nunsG5iVuDA
提取码: xypp

3、在2号工程里,我删掉了所有预置物体,重建的新的。然后,打开预置体,不会出错了,但是如视频所见,打开预置体之后,跳转去编辑其他场景(任何一个场景),报错了。

4、是不是因为我把预置体依赖的资源放进了resources目录?

1赞

好的,谢谢反馈,大概知道是什么问题导致的了,是因为场景中有 mask 组件中的 removeGraphics 不是立即移除的,导致出现了,object already destroyed 警告

这样啊……那其实不影响到业务的话,我可以不管这个问题,对吧。

谢谢哦老哥,引擎团队辛苦了。感谢你们。

该警告已经修复
相关 pr : https://github.com/cocos-creator/engine/pull/4291 应该会进到 2.0.10 跟 2.1.1

1赞

辛苦了,感谢你们~~么么哒。