提一个碰撞器监听事件和释放事件的大bug

onLoad()
{
this.collider = this.getComponent(Collider);
this.collider.on(“onTriggerEnter”,this.onTriggerEnter,this); //给节点碰撞器监听一个触发事件
}

protected onTriggerEnter(event:ITriggerEvent):void
{
}

onDestroy()
{
this.collider.off(“onTriggerEnter”,this.onTriggerEnter,this); //销毁节点,并释放事件时必定报异常
}

上面的代码是节点上挂载一个3d碰撞器,并且挂载3d刚体。脚本执行时在onLoad给这个刚体的碰撞器监听触发事件,在这个节点销毁时并且在onDestroy回调里试图把监听的事件注销,这时必定会报异常。如果不是在onDestroy里释放监听不会有异常

发生在引擎版本creator3D 1.20.。比这个低的版本不会有这个异常。creator3.0是在 creator3d 1.20的基础上升级的,可能会有,还没空验证。

感觉我不是在开发游戏,而是在给你们查bug :joy:

组件销毁不需要手动 off,会自动清空

组件如果监听的不是自身脚本的函数,而是第三方脚本的函数呢,这个destroy了也能自动释放?

自动清空就自动清空吧,别让手动去释放监听的时候抛个异常出来,看着很不爽。

会的,另外3.0这段代码不会有问题

好吧,3.0正式版出来我再试一下