UGUI粒子与UI叠加状态(粒子与UI渲染顺序)

    技术2022-07-10  161

    游戏开发中不免要在两个UI元素之间插入一个粒子特效(Partice Sysrtem),使我们的粒子处于两个UI元素中间。

    实现方案1

    1.通过设置Canvas层级和粒子渲染层级达到效果

    如图,粒子夹在ImageA和ImageB中间 这里实现方式有很多种 1.ImageA和ImageB处于两个不同渲染层的Canvas 两个Canvas的RenderMode使用相机模式(Screen Space-Camera) A的Canvas渲染层级为10,B为0 然后粒子特效的RenderOrder为0-10之间即能显示在两UI之间 2.同样的在一个使用(Screen Space-Camera模式下)的Canvas下,粒子的渲染层与Canvas的层级相同,则可以通过Z轴的距离来调整渲染先后顺序

    实现方案2

    通过代码重写设置Canvas的sortingOrder层级

    public class UIDepth : MonoBehaviour { public int order; public bool isUI = true; private void Start() { if (isUI) { Canvas canvas = GetComponent<Canvas>(); if (canvas == null) { canvas = gameObject.AddComponent<Canvas>(); canvas.overrideSorting = true; canvas.sortingOrder = order; } } else { Renderer[] renders = GetComponentsInChildren<Renderer>(); foreach (Renderer render in renders) { render.sortingOrder = order; } } } }

    在同一Canvas下,ImageA,B同时挂上UIDepth脚本,设置order一个为0,一个为10,粒子特效的渲染层为0-10之间 运行即能看到效果 还可以通过Shader修改渲染顺序

    Processed: 0.013, SQL: 9