求助NodePool的使用

我有个节点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赞

可以:2::2:

可能我的表达能力有问题,我的意思是当调用node.destroy()之后,首先会调用node的onDisable,然后再调用onDestroy,所以你要获取子节点可以在onDisable里操作,或者说我没理解你的意思?:joy:

有些问题,最起码onDisable在设置node.active=false的时候也会调用。
toddlxt说的重写destroy方法应该会更好一些,不过得重写node的destroy方法才行
不过还是要谢谢你的思路:2::2:

sorry,我理解能力有问题
@toddlxt sorry,我以为你是回复他的:joy:

http://forum.cocos.com/images/emoji/emoji_one/joy.png?v=1

为啥你这个那么大?

:astonished:卧槽,你这个更大


感觉论坛要玩坏了

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

6666666666666666666666666

同有此需求哎