好久不来博客,最近遇到一个问题:插件kolmich小地图与NGUI的显示顺序,由于两个插件都有自己的camera,小地图一直显示在ngui对话框的前面,却怎么也不好调到后面去。调了render queue发现一直没有效果,后来是发现误解了render quueue的意思,需要调depth。
Render Queue:如果你使用Unity做过一些透明和不透明物体的混合的话,很可能已经遇到过不透明物体无法呈现在透明物体之后的情况。这 种情况很可能是由于Shader的渲染顺序不正确导致的。通过调整Queue值, 我们可以确保某些物体一定在另一些物体之前或者之后渲染,这个技巧有时候很有用处。但是这只是针对同一个camera渲染的物体。
depth:官网API的解释是:相机在渲染顺序上的位置。具有较低深度的相机将在较高深度的相机之前渲染。也就是说depth越高,界面窗口的显示越靠前。这个理解起来比较绕口,我们通过一个例子来看。
1.在Unity中新建一个场景,场景中新建一个cube和sphere.
2.在场景中再新建两个camera分别命名为camera_cube和camera_sphere,并建立两个layer type分别是cube和sphere(如图2-1),camera_cube的culling mask设置为之照射cube层,camera_sphere同理。
图2-1
3.将cube和sphere的layer分别设置成对应的cube和sphere,若场景中看不到cube和layer适当拖动摄像机,让cube和sphere在摄像头的视野范围内。
4.调整camera_sphere的depth为5,这时候场景中显示只看到sphere,切换调整camera_cube和camera_sphere的depth大小,便会发现场景中cube显示与sphere显示切换。如图4-1,2
5.有时候项目中depth差很小的情况下,看不出前后,可以适当调大。
Render queue的调整主要跟shader有关,这里就不多写了。