我有个节点A,有个NodePool,我从NodePool中取出节点添加到A中,当A要销毁的时候我想把A中的节点都放回NodePool中
一、用onDestroy监听下销毁事件。行不通。
二、事先知道哪些地方会让A销毁,然后写个通用方法,在那些地方调用一下。行得通,但是好麻烦。。。
各位有什么好意见没
我刚刚试了试,onDestroy之前会调用onDisable,所以
我刚刚又试了试,onDisable里可以获取到子节点,所以
如果仅仅是将A的active设成false了,在onEnable还得再做工作。。。。
onDestroy之前会调用onDisable,你就在onDisable里获取子节点放回nodePool 啊…
@atmy他的意思是onDisable中不知道是onDestroy调用了它还是仅仅将A的active设置成false调用了它。
想到一个办法,重写A的destroy方法?以下代码纯手打,未测试:
cc.Class({
extends: cc.Node,
destroy() {
this.returnNodePoolNodes();
this._super();
},
returnNodePoolNodes() {
// 将节点返回NodePool
}
}
1赞
可以

可能我的表达能力有问题,我的意思是当调用node.destroy()之后,首先会调用node的onDisable,然后再调用onDestroy,所以你要获取子节点可以在onDisable里操作,或者说我没理解你的意思?
有些问题,最起码onDisable在设置node.active=false的时候也会调用。
toddlxt说的重写destroy方法应该会更好一些,不过得重写node的destroy方法才行
不过还是要谢谢你的思路

为啥你这个那么大?

卧槽,你这个更大

我是这样写的,切换场景的时候好像是调用了根节点的destroy方法,其余调用的是node的_onPreDestroy方法
6666666666666666666666666
同有此需求哎

