Unity+NGUI 层级与深度的各种关系及调整

发表于2018-12-19
评论0 4.4k浏览
如果大家的项目是用NGUI实现的2D游戏,并在其中穿插各种模型和特效的话,没有一定的开发经验,可能很多开发人员都不能很好的去解决面片特效层级调整的问题,针对这种情况,下面就给大家整理了一下Unity和NGUI的各种层级关系。

在NGUI下,层级按优先级从高到低排列如下:

1.摄像机的深度 Camera.Depth
SortLayer

2.SortOrder,这个属性可以在NGUIPanel和粒子的Render里调整,默认都是0

3.RenderQueue属性,这个在Inspector面板中只能在UIPanel中显示调整(从3000开始,设置以后“4”和“5”的Depth就会失效,即便这个属性值一致),并且每个Material也可以通过代码设置这个值

4.UIPanel的Depth

5.UIWidget的Depth

6.空间坐标,在以上属性一致的情况下,根据与摄像机的位置渲染

补充:以上关系都是在shader的ZWrite属性设置为OFF的前提下,如果是ON,大家就需要注意了。

用面片模型制作的特效的层级设置:
    void ChangeQueue(int layer)
    {
        if (layer >= 3300) layer = 3300;
        gameObject.GetComponent<Renderer>().sharedMaterial.renderQueue = layer;
    }
这种方式同样对于粒子有效,通过这种方式,就不用调整SortOrder。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引