UGUI研究院之不添加摄像机解决UI与UI特效叠层问题(九)

找到一个不用添加多个Camera在两个UI中叠加UI特效的方法。如下图所示,两个Image之间放了个UI特效。

UGUI研究院之不添加摄像机解决UI与UI特效叠层问题(九) - 雨松MOMO程序研究院 - 1

上代码:

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class UIDepth : MonoBehaviour {
public int order;
public bool isUI = true;
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;
}
}
}
}

原理就是设置 sortingOrder ,给需要修改order的UI元素挂上UIDepth脚本 。如下图所示,在UI容器中设置order。

注意: UI0 我设置了order =0 (可以不设置,因为默认所有UI的Order都是0)

ParticleSystem 我设置了order =1

UI2 我设置了order =2

所以效果是,UI2 挡住 ParticleSystem 挡住 UI0

UGUI研究院之不添加摄像机解决UI与UI特效叠层问题(九) - 雨松MOMO程序研究院 - 2欢迎大家提意见。互相讨论互相学习UGUI~,嘿嘿。

补充一下,这段代码必须运行了才能看到效果。

 

 



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)

最新评论