3.3.2 编辑器Bug

  • Creator 版本: 3.3.2 (目测其他版本也有一样的问题)

  • 目标平台: Mac

  • 重现方式:在任意文件顶层 先后执行 director.off/on 同一个方法,在编辑器环境内,这个监听会并不会只保持一个,而是每刷新一次编辑就多一个,相同的操作 game 好像没有问题。运行环境无此问题。

  • 线索:控制台显示 每次刷新编辑器 存在 Invalidate all modules 和 Imports all modules
    应该是 反导入所有模块时,并没有对 director 做清理,而重新导入的模块已经属于新对象而导致off目标函数失败

目前并不清楚引擎在启动的时候是否对 director 做了其他监听,所以不敢贸然使用移除所有监听的操作。

测试了下,先后执行 director.off/on 同一个方法,刷新多次,编辑器环境下只会有一个,我的测试demo:
126846.zip (1.3 MB) 。
方便的话发下你的测试demo。

不好意思,提bug一直没有提供demo的习惯 :rofl: 主要还是懒!

此问题仅出现在编辑器环境内。
如果此问题属于一个Bug,请一并检测game对象或其他同类对象是否存在同类问题
以下是修改后的demo,请查收
126846 2.zip (1.4 MB)

将一个预制件A拖入另一个预制件B,然后保存预制件A的脚本,回到编辑器直接卡死

你这里提到的刷新是指刷新编辑器?我用你新给的代码也没看到你说的问题啊。

存在以上描述的刷新操作,比如随便保存一下脚本返回编辑器。
打开编辑场景控制台,输出一下 director 对象的监听信息
或者直接看编辑器内的控制台日志也行,日志数量会逐次递增

调试了一下引擎代码,发现编辑器内每次刷新后这里缓存的callback和新创建的callback对不上,导致会有多个监听信息


我用window对象缓存了一下这个方法之后就正常了,你可以尝试下:

是的,就是这个问题

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。