cc.isValid逻辑有点问题,不知道是设计如此还是逻辑漏洞

如上图,在strictMode 模式下,isValid 只判断了 Destroyed | ToDestroy 两种情况。

但是,在场景执行destory的时候,在场景节点的组件 onDestroy 中,去打印这个node的_objFlag为 128,

此节点的状态为 Destroying 。

所以在 节点的 onDestory 中去 cc.isValid(this.node,true),返回的是true,表示这个节点有效。

这个问题在1.9的版本中我记得就反馈过,不记得官方为什么设计如此,还是逻辑bug。

为什么不改成:

希望大佬提点一下。

个人浅见:在onDestroy中判断节点是否有效的需求有吗?既然是销毁触发的方法函数,就是已然知道节点将被销毁但在此方法执行完之前就表示销毁过程未完成,有必要考虑节点无效的情况吗?另外,如果监听了事件,一般都在onDestroy中off掉,此时如果节点无效,可以顺利解除节点上的监听事件吗?