NodePool put 节点扔显示

尝试把不用的node节点放入缓冲池中,这样用 put 方法,运行后被put的节点扔显示
/**
* 将对应节点放回对象池中
*/
public static putPool (node: Node) {
if (!node) return;
gmm.pool.put(node);
}

        let saveNameArr = ['eatEff', 'runFastEff'];//要保留的子节点
        for(let ndChild of ndBox.children){
            if (!ndChild) break;
            if (!go.inArray(ndChild.name, saveNameArr)) {
                // ndChild.destroy();
                gmm.putPool(ndChild);
            }
        }

改成

for(let ndChild of ndBox.children.slice())

您好,看起来您在使用 Cocos Creator 对象池管理节点,但是 putPool 方法无法成功将节点放回对象池中,且节点仍在显示,可能的原因如下:

  1. put 方法调用时机不对:put 方法必须在节点从父节点中移除后才能调用。如果 put 方法在节点未被移除之前调用,节点将无法被正确地回收。
  2. 对象池的节点数量太少:如果对象池中的节点数量不足以满足游戏中需要动态创建的节点数量,那么 put 方法就无法将节点回收到对象池中,节点仍会保留在场景中。
  3. 其他异常情况:例如代码中的 go.inArray 函数出现了问题,导致判断节点是否需要保留时出现错误,或者 putPool 方法的实现有误等等。

建议您先检查 put 方法调用的时机是否正确,并检查对象池中的节点数量是否充足。如果问题依然存在,可以提供更多的代码或者详细的错误信息,以便更好地排查问题