Unity 转到 CocosCreator3.8 遇到 2D 渲染排序问题

  • 从 Unity 过来的, Unity 的SortingLayer, Order In Layer可以很方便的设置 Sprite 的渲染顺序

  • 到了 CocosCreator 这里发现没有这个功能, 仅有已找到的方法就是用 setSiblingIndex方法来设置节点在父节点下的位置

  • 在我理解看来, 如果用这个方法就需要所有排序节点要都要放在同一个父节点下, 这样虽然可以做到子节点的排序, 但是节点顺序混乱, 管理上只能通过脚本来管理不同类的节点

  • 而且如果有下面这种情况, 是不是就无解了

    • 例: 有一个做好的玩家的预制体, 里面包含了一个血条, 需求是 血条的渲染层级是最高, 玩家的渲染层级随 Y 轴坐标变化
    • 如果按照所有渲染节点都在一个父节点下的逻辑, 感觉无法做到了, 要怎么处理真的很困惑

可以按照大类进行分层。
把血条和攻击数字这种UI类统一分到UI层放到最上
角色怪物场景分到游戏层放到UI层下面
以此类推

谢谢您的回答, 您的方案我也有想过 , 但是如此一来一是破坏了预制体结构, 要弄一个角色 和一个血条, 二是还要单独写逻辑去让血条跟随玩家移动, 是可以实现, 但感觉麻烦了很多

那就直接多摄像机吧

1赞

理论上分开才是最好的,统一放在一起,随着功能增多只会让角色prefab越来越大。分开按需加载最节省。
至于UI跟随,也是最好提前做好一个系统,进行统一的坐标移动管理。

确实分开最好,按道理应该给hud和actor分层的,麻烦一点,但是天然优化合并了dc。

unity的方法确实方便,cocos这边只有靠插件了: Cocos Store

也可以把血条都放在ui层,根据player的位置转到ui坐标设置血条位置这样血条也可以合批

UI渲染合批 可以参考下这个帖子