setSiblingIndex 不能实现 zOrder 功能

做一个超长的滚动界面,肯定要做动态更新的 超出屏幕的部分放在NodePool里面,只显示屏幕中的部分
滚动界面包含 背景 与 地图 与 前景物品,之前只需要把背景zOrder设置为0 其它的 一层层依次设置增大即可
可是现在用这个setSiblingIndex之后 就管理不了zOrder了, 子节点数组的大小随着滚动是变化的,如果只有两层还凑活用(背景设置0 前景设置1000),3层以上就不行了,因为不知道从第二层开始其它类型子节点的数量,进而不能设置这个sibling,除非每次addchild时候都分析一遍所有子节点
这河里吗?
另外请问哪个大神有好一点的解决方案

很明显,不河里

image

这是我之前测试2d记录的 3d应该同理

declare module “cc” {
interface Node {
/** 借助它实现2.x层级效果,直接赋值不会有任何效果 /
zIndex: number;
}
}
/
* 根据zIndex统一设置节点顺序 */
public setChildrenNodeSortByZIndex(parent: Node): void {
if (!parent) {
return;
}
let children = parent.children.concat();
children.sort((a, b): number => {
if (a.zIndex == null) {
a.zIndex = 0;
}
if (b.zIndex == null) {
b.zIndex = 0;
}
return a.zIndex - b.zIndex;
});
let maxIndex = children.length;
for (const node of children) {
node.setSiblingIndex(maxIndex);
}
}

getComponent(UITransform).priority 也能实现