能不能加个beforeDestroy
应用场景:
某个场景S下有个节点N,N下有一堆子节点,当切换场景的时候导致N销毁或者直接销毁N时,我想把N下的所有子节点全部放回对象池中
我现在是这么做的,N的一个脚本里面

如果有beforeDestroy我可能这样写就成了

能不能加个beforeDestroy
应用场景:
某个场景S下有个节点N,N下有一堆子节点,当切换场景的时候导致N销毁或者直接销毁N时,我想把N下的所有子节点全部放回对象池中
我现在是这么做的,N的一个脚本里面

如果有beforeDestroy我可能这样写就成了

在 node 上挂一个组件,组件定义一个 onDestroy
onDestroy () {
this.clearNode();
}

这样写我都试过了,父节点onDestroy的时候子节点都销毁了,我又不想把逻辑写在子节点上
如果子节点没销毁,先销毁父节点,那不是很奇怪吗?
或者你把逻辑写在 onDisable,这样父节点的就会先被调用到
我没诟病onDestroy有什么问题。。。
active=false的时候onDisable就会执行,不符合需求
所以我说能不能考虑加个beforeDestroy,来监听将要销毁的事件
不加的话我就还继续重写destroy和_onPreDestroy
场景切换时死活都会 destroy 的,不论是像你现在这样 hack destroy 的流程,还是在引擎提供的 beforeDestroy 中 hack,本质上都是一个终止并撤销 destroy 的操作,这个行为不在引擎的预想范围内,将来引擎升级后可能会引起行为不一致。也就是说你这里就算有 beforeDestroy,我也是不建议你这么使用。
所以提出这个使用场景作为增加 beforeDestroy 的论据我觉得是不够合理的。
既然你想要把所有节点都放到对象池,那我建议在场景切换时,先由你自己的场景管理器去进行 clear 操作,再执行真正的场景切换。
同样觉得需要加个beforeDestroy ,这样方便很多啊
想要在场景离开的时候记录一些场景的参数值到存储中,没有 beforeDestroy 做起来很蛋疼 。我认为 beforeDestroy 是一个很合理的要求。
然后又需要一个beforeBeforeDestroy
然后又需要一个beforeBeforeBeforeDestroy…
对,还需要一个 beforeBeforeBeforeDestroy.
可以写UI框架,自定义生命周期函数,随心所欲,我现在是这么做的
fen帖?
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。