今天来教大家如何在两个UGUI中显示粒子特效
在这篇文章之前,已经给大家分享过如何使用RenderTexture来完成3d物体或特效与Ugui的混合显示
文章链接:http://www.u3d8.com/?p=1047
那么今天使用另外一种更为便捷的方式来完成粒子和UI的穿插显示。
首先我们看下效果图:
使用脚本:(当修改的粒子较多时)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; public class RendererDepth : MonoBehaviour { public int order; [ContextMenu("SetOrder")] void SetOrder () { Renderer[] renderers = GetComponentsInChildren<Renderer>(); for (int i = 0; i < renderers.Length; i++) { renderers[i].sortingOrder = order; } } } |
实现步骤:
一、设置“Canvas”的“Render Mode”属性为“Screen Space-Camera”,并将主摄像机拖入“Render Camera”
二、完成粒子与UI的布局
图中“Image”为特效后面显示的背景图片,“Effect”为特效父对象,“Image(1)”为特效上面显示的图片
三、在UI上挂载“Canvas”组件,并设置参数如下:
其中Order in Layer是该UI的深度,越靠前显示的深度越大。即 将“Image”深度设为0,“Image(1)”深度设为2
四、将“RendererDepth”脚本挂载在粒子父对象上
设置“Order”参数为1,然后点击右面的功能图标,执行SetOrder 就自动将该父对象下面的所有粒子深度都设置为1了。
然后就可以移除“RendererDepth”脚本
五、测试一下,试试是否好用呢~~
备注:第三条使用“RendererDepth”只是快捷改粒子深度的方式,适用于粒子太多,手动改太麻烦的情形。
如果只有几个粒子,也可以直接修改粒子身上的“Particle System”——“Renderer”——“Order in Layer”数值
- 本文固定链接: http://www.u3d8.com/?p=1244
- 转载请注明: 网虫虫 在 u3d8.com 发表过