获取敌人的父节点,遍历其子节点,将所有子节点放回对象池中。

我在游戏中制作了个大招,能消灭所有敌人。我先获取到敌人父节点,再通过遍历children的方式获取所有子节点。再将其一一放回对象池。但是不知为什么只放了一个for循环就结束了,根本不往后面走了。这是那块的代码
当我注释掉this.OnEnemyKilled时,for循环都会遍历所有子节点。而当执行这句话时,放了一个对象,循环就不走了

没看到this.OnEnemyKilled具体做了什么,猜测是把子节点移除了

所以你这个操作就是一边用索引遍历数组一边移除它的元素,这种操作本身就是不对的,因为当你移除元素的时候索引就发生变化了

要实现这个功能完全可以把for(…)改成while(_children.length)

    while(_children[0]){
        this.onEnemyKilled(_children[0]);
    }

好的了解了 谢谢

感谢:grin::grin::smiley:

从0遍历删除数组元素会造成数组内存不停的前移,效率太低.
for(let i= children.length-1;i>=0;i–){
nodepool.put(children[i]);
}