3.x是否有 对频繁改变2D游戏层级 相对高效的 解决方案?

例如传奇类的45度伪3D游戏中,场景中的角色会因为移动造成频繁的层级改变。
2.x版本到时可以通过设置prioryZIndex来实现
但3.x版本取消了这个机制,改为使用setSiblingIndex的方式来实现
这里的源码我简单看了一下,做法是将该节点插入到父节点所有子节点序列的对应位置,然后渲染是默认按照这个子节点序列进行的。

这种机制适合于偶尔变变,并且不需要频繁添加删除节点的场景来做。
但是频繁改变,难道我每次都需要使用一个排序算法把子节点中,所有元素重新排序一下吗?

想问一下大佬们3.x版本是怎么去高校实现的?

东西少的话可以自己对节点进行排序,古国东西多可以考虑买个插件: Cocos Store

1赞

这如果不同层级也可以吗?比如A和B都都子节点,A1想在B1前面,A2想在B2后面。这样的层级也可以?

可以的。。。。

插件??是指编辑器用的插件吗??我确认一下,我这边是需要行时进行动态调整的?

看说明哈,肯定是动态调

官方的这个setSiblingIndex 这个方法是抄的unity的但是没有抄到精髓上 只是把函数名字抄对了!所以特别多人吐槽 unity使用这个方法是最后的时候统一在遍历一次设置先后顺序的 而cocos这个你每调用一次就排序一次真的有毒 效率极低 而且使用的人带来误解!你设置一个101 后们再设置一个100你会发现100的层级居然在101之前

我是觉得priorityIndex挺好的,能主动去控制渲染顺序。
而且觉得不再使用这个东西能提高多少性能呢,因为如果这一块儿和2dx差不多的话,应该是有产生过变化的时候才会在该帧重新刷一次顺序。

如果说unity只有这么一个setSiblingIndex,我猜unity别人完全没有2d游戏的渲染流程,所有的2d游戏其实都是由多相机+深度去实现的,所以完全用不到priorityIndex
但如果真是这样,cocos要抄,又没有完整的升级方案,让用惯了2.x的用户能够平滑的过渡到3.x,那干脆别做2d引擎了,丢了吧(虽然似乎现在就是这样的?)

早知道还是用2.x了,2d游戏就不该用3.x

2.x容易被人反啊。3.X难一点

我很多地方用到 zIndex 了,也没用 3.x,3.x 感觉有些功能代码量要比 2.x 多很多,,

自己在lateupdate里面做一次排序就好了