setSiblingIndex 设计的为什么这么反人类

setSiblingIndex 设计的为什么这么反人类。 之前zindex。 我并不需要关注有多少个节点, 默认都是zindex都是0, 我设置其中一个为1,就在最上层。
setSiblingIndex 我还的知道,该节点的父级有多少个元素来设置。

image
还是通过数组换顺序实现的, 如果我的节点很大, 这个数据换顺序,是不是有性能问题?

1赞

因为unity是个反人类引擎

如果你想让他在最上层,直接 setSiblingIndex(999),他会自动设置为children的最大值

要怪就怪你自己,不会重写引擎。 :rofl:

setSiblingIndex(0)
setSiblingIndex(1000)

为什么会觉得反人类,要想想是不是自身的原因,有没有努力干活 :rofl:

4赞

对,只要不做人,就不会觉得反人类啦 :joy:

-1就可以

2赞

所有我从来不使用这个接口

 说人话 ‘’‘’‘

大量顶点的排序建议看一下引擎代码中setSiblingIndex的实现,他也只是重组了children数组。
可以这么实现(我用的3.7.1, 具体还是要看引擎怎么实现):

function quickSortChildren(target: Node, sortFunc: (a: Node, b: Node) => number) {
    node.children.sort(sortFunc);
    node['_updateSiblingIndex']();
}

只能说确实没有zindex好用

h5有效,真机无效

这个玩意儿确实没设计好,层级不应该和其他的东西关联,这属于是做引擎的人图省事,和数组索引关联了,这样渲染层级好处理。希望官方能单独弄一个设置层级的接口,以前的zIndex就挺好的。。。

1赞

zindex被废猜测最大的原因是性能问题

是的,节点多起来的时候,有序数组性能比无序数组性能高,如果是按照子节点的索引来处理,无疑性能会更好