Unity+NGUI 层级与深度的各种关系及调整
发表于2018-12-19
如果大家的项目是用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。