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

来源:互联网 发布:云计算 立项书 编辑:程序博客网 时间:2024/06/05 18:02
现在手头的项目是用NGUI实现的2D游戏,其中穿插各种模型和特效...总之,各种蛋疼。问了好多人,也没解决面片特效层级调整的问题,颇为感概:不是unity不人性,只是项目非主流...

但是当问题解决后,才发现,unity也挺人性的,只是自己知道的还太少。

整理一下unity和NGUI的各种层级关系。在NGUI下,有这么几层(按优先级从高到低排列):

1,摄像机的深度 Camera.Depth
1.5,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;    }

用上面这个去设置,一切OK!

这种方式同样对于粒子有效。通过这种方式,就不用调整SortOrder

欢迎转载。转载请注明:
Hello光头原创
如有建议或意见,欢迎留言。
也欢迎大家加我qq,一起学习进步:1009570451



1 0
原创粉丝点击