cocos-engine
cocos-engine copied to clipboard
在带Mask节点的onEnable生命周期函数中修改Mask.type报错
Cocos Creator version
3.8.6
System information
Windows 10 Editor
Issue description
如题,在使用FairyGUI中使用Sprite自定义遮罩时发现该错误。大概逻辑是:
- 在Mask组件onLoad时,会创建默认的Graphics遮罩组件;
- 在延时显示节点时,引擎源码会收集所有组件实例到一个列表中,相关代码:
this._activateNodeRecursively(node, task.preload, task.onLoad, task.onEnable); task.preload.invoke(); task.onLoad.invoke(); task.onEnable.invoke(); - FairyGUI在某组件的onEnable函数中触发了Mask的类型修改,修改为了Sprite类型的遮罩。在引擎源码中,这里会将原Graphics立即销毁,相关源码
this._graphics._destroyImmediate();; - 在调用
task.onEnable.invoke();时由于Graphics实例已被实时销毁,导致异常。
this._graphics._destroyImmediate();的调用在mask类型切换时似乎并不必须,请确认该问题并优化此处的逻辑
Relevant error log output
No response
Steps to reproduce
如上所述
Minimal reproduction project
No response