新手贴:setSiblingIndex问题

用setSiblingIndex(40)设置完子节点在父节点的层级后,通过编辑器预览发现子节点层级确实下去了,但是运行的时候遮挡关系并没有发生改变

补充一下,是在3d场景中修改2d节点的层级,我看了一下setSiblingIndex,他好像是修改的y轴是吗,我3d中的y轴没有变化

所以现在是什么问题呢

就是setSiblingIndex现在没有效果,本来是3d场景用的3d人物,但现在在换成2d,发现移动的时候人物间有层级问题,就想用setSiblingIndex调整层级,但是调用后代码打印出来发现子节点数组位置确实变了,但是运行时还是原来的层级遮挡关系,然后我不用代码,直接在编辑器里调整节点的位置,在浏览器预览时就没问题

1.只能处理同一个父节点下子节点的层级关系。
2.还有就是你s(100) 假如你的父节点下没有子节点 它的index值会是0。(子节点的index排序值是从0开始的)
假如有一个节点 你s(100)了 index值是1。
3.假如你的父节点有A、B、C三个节点,这三个节点的index值是0,1,2。你把b s(100),那么就会变成 ACB,index值 0、1、2

image
image
两个节点都在同一父节点下,层级显示调整前后确实变了,但是遮挡关系没任何变化,但我在编辑器手动将节点调整层级后打开预览 层级遮挡关系就变了

应该是变化的,看下是否在同一摄像机下面

在同一相机下,重点是我在本地手动调节点位置就没问题,然后开启编辑器预览的时候也能看到节点的位置确实变了,就是遮挡关系不变,我还特意开了个2d项目测试,也没问题

问题已解决,因为我在3d里要用spine动画,所以给每个人物子节点都添加了RenderRoot2D组件,后来研究发现该组件放在子结点上,再调用setSiblingIndex就会发生层级改变遮挡关系不变的问题,解决办法是将所有子节点上的RenderRoot2D组件都删掉,就给父节点添加一个,这样问题就解决了,对2dspine动画放在3d场景中无影响,希望能帮到后面遇到相同问题的人。

1赞