1.42 设置子节点的parent 的bug

Creator 版本号:v1.4.2
运行时目标平台:模拟器

编辑器之前是否有其它报错:无
做了什么操作引起的 Bug:
偶发 bug 的概率和额外线索:每次都能重新

将一个 含有 layout组件的 conten子节点数组 取出之后,通过 shift()删除child[0],然后将该节点 node.parent=null之后,发现conten在进行该操作同时将conten的最后一个子节点删除。以下是操作过程

此时,子节点数量为6,

执行shift后,子节点数量减少一个:

再执行node.parent=null后,最后一个子节点被莫名删除

有那个大神来指教一下啊,有点着急啊

删除子节点是不能直接操作数组的。这个数组是只读的,API 文档里有写:

删除子节点请用 child.destroy() 或者 child.removeFromParent(false) 或者 child.parent = null;

1赞

请问一下为什么要将一个节点的子节点数组设置为只读啊,如果有需求需要在一个节点的子节点数组中的任意位置插入一个结点,这样岂不是无法实现?感觉现在很多的游戏逻辑中都可能有这种需求的啊!比如一个卡牌游戏,在某一个位置插入卡牌,如果不能直接对子节点数组某个位置插入,岂不是每次插入一张卡牌,都需要对这个卡牌父节点的该位置之后的所有子节点重新赋值,这样不是很浪费性能么?请大神指教一下

因为引擎无法捕获用户对数组的修改,用户对数组的修改引擎无法同步到场景中。

先设置 parent, 再 setSiblingIndex

1赞