论RenderQueue、SortingLayer、SortingOrder关系
Unity自带了一套物体间的决定渲染顺序的参数,其中最重要的三个为:SortingOrder、SortingOrder、RenderQueue。
SortingLayer在Inspector面板中点击Tag -> AddTag -> SortingLayer,可以增加自己设置的sortingLayer,默认的sortingLayer为Default, 自己设置的layer可以在之前也可以在之后,SortingLayer的第一个将是默认的层级,会将所有的已经创立的物体的sortingLayer属性都自动设置为第一个。因而假如想要做层级划分,最好在游戏开始设计之时就开始划分好对应的层级,至少第一个层级需要想好,否则后期改起来是个大工程。
在探讨SortingLayer跟SortingOrder之前,需要知道RenderQueue。由于RenderQueue起到一个关键的作用。它处于shader层面,并且与具体的数值表示透明不透明等渲染队列顺序。如下图:
??

当RenderQueue填-1是使用shader自己设置的值,否则使用手动填的值,具体位置在材质的inspector面板的最底下:
??

上面的队列列表少了一个关键的区域[2450,2500],正确的应该是这样的:
??

2500是关键值,它是透明跟不透明的分界点,因而我们考虑层级的时候要注意着点:renderqueue > 2500的物体绝对会在renderqueue <= 2500的物体前面,即渲染时renderqueue大的会挡住renderqueue小的,不管它的sortingLayer和sortingOrder怎样设置都是不起作用的。知道了这点,其余的就很好了解了。
其余两个方向,在SortingLayer高的绝对会在sortingLayer前面,无视renderqueue跟soringOrder,只有在sortingLayer相同的前提下,soringOrder高的会在sortingOrder低的前面,无视renderqueue。当sortingLayer跟sortingOrder相同时,才看renderqueue的高低,高的在前面。
因而只要要每当我们需要在ui中间夹着特效的时候,就有多种处理思路,一是将ui分别放置于两个不同的sortingLayer,并将特效放于中间的sortingLayer,并保证他们的renderqueue同时在2500的同一侧。二是将他们的sortingLayer都设置为同一个,并将特效的sortingOrder保持在两个ui的sortingOrder中间就可。三是保证ui跟特效的sortingOrder跟SortingLayer相同,并保持特效的renderqueue在两个ui的sortingOrder之间就可。
需要注意的是,当使用NGUI的时候,假如开启了Panel的SortingLayer和SortingOrder,那么Panel的collider也就是碰撞检测需要注意,由于NGUI的Collider决定点击到的哪个物体并不是由SortingLayer决定的,而是由Panel的depth*1000+widget本身的depth计算来得,因而假如Panel使用了SotringLayer跟SortingOrder,可能会导致点击穿透,而且还没法从UI层面遮蔽,由于他就是在你前面。而且,depth也不宜过高,假如超过depth超过1000,那么相邻得两个Panel也会出现穿透现象
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 论RenderQueue、SortingLayer、SortingOrder关系