Hello Mingo

从乱七八糟的设计模式到最后的独孤九剑,我们需要多少年的修炼。

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

现在手头的项目是用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



阅读更多
版权声明:Hello Mingo原创,欢迎交流拍砖扔鸡蛋,qq:1009570451 https://blog.csdn.net/u010133610/article/details/51548896
个人分类: unity
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭