cocos creator version:2.0.7
參考文檔,put()会自动将目标节点从父节点上移除。然鹅,如果有一个nodeA,A有1个children[B],参考以下脚本:
let nodePool = new cc.NodePool();
nodePool.put(nodeA.children.pop());
let newNode = nodePool.get();
console.log(newNode.parent, nodeA.children);
结果:
newNode.parent是nodeA,但nodeA.children沒有此newNode;
再来:
newNode.parent = nodeA;
结果:
nodeA表示不认识这个儿子(nodeA.children沒有newNode);
除非必要,永远不用去手动修改引擎内部维护的结构
你不应该对children这个数组进行读以外的操作,你把它改了,引擎不知道,然后就造成你这个问题了
你可以对nodepool包装一层,自己做移除父节点