青島路橋建設(shè)集團有限公司網(wǎng)站seo關(guān)鍵詞優(yōu)化推廣價格
Unity中的渲染順序自上而下大致分為三層
渲染優(yōu)先級 Camera depth > Sorting Layer > Order in Layer > RenderQueue
Camera depth:越小越優(yōu)先(大的顯示在小的前面)
如圖:盡管Sphere距離攝像機較遠,但由于Camera_Sphere depth大于Camera_Cube,所以最后Sphere顯示在Cube的前面。

Sorting Layer/Order in Layer:越小越優(yōu)先(大的顯示在小的前面)
添加Sorting Layer在Inspector中Tag->Add Tag->Sorting Layers
如下圖:Canvas1中是Image是紅色的根據(jù)UGUI默認顯示規(guī)則,Canvas1會覆蓋Canvas,但由于Canvas的Soriting Layer比Canvas1高,所以渲染順序改變了。

RenderQueue:越小越優(yōu)先(大的顯示在小的前面)(這里要關(guān)閉ZWrite)
需要注意的是 RenderQueue 2500是關(guān)鍵值,他是透明與不透明的分界點。
RenderQueue > 2500 物體一定顯示在 RenderQueue <= 2500 的前面,不論Sortinf Layer和Order in Layer 怎設(shè)置,即 RenderQueue 大會擋住小的。
需要特別注意的是,半透明物體( > 2500)距離越遠越優(yōu)先渲染,不透明物體正好相反。
Unity已經(jīng)提供了一些默認的渲染隊列,每個渲染隊列都有一個唯一值來確定何時將物體渲染到屏幕,如下:
渲染隊列 | 渲染隊列描述 | 渲染隊列值 |
Background | 這個隊列被最先渲染。它被用于skyboxes等。 | 1000 |
Geometry | 這是默認的渲染隊列。它被用于絕大多數(shù)對象。不透明幾何體使用該隊列。 | 2000 |
AlphaTest | 通道檢查的幾何體使用該隊列。它和Geometry隊列不同,對于在所有立體物體繪制后渲染的通道檢查的對象,它更有效。 | 2450 |
Transparent | 該渲染隊列在Geometry和AlphaTest隊列后被渲染。任何通道混合的(也就是說,那些不寫入深度緩存的Shaders)對象使用該隊列,例如玻璃和粒子效果。 | 3000 |
Overlay | 該渲染隊列是為覆蓋物效果服務(wù)的。任何最后被渲染的對象使用該隊列,例如鏡頭光暈。 | 4000 |
示例如下圖:當在Shader中把ZWrite 關(guān)閉,RenderQueue設(shè)置為2000。Camera Clear Flags設(shè)置為Solid Color 立方體能顯示出來,如下圖1,Camera Clear Flags設(shè)置為Skybox時,立方體不見了,如果下圖2。原因是RenderQueue <= 2500時不透明物體優(yōu)先渲染近的。先渲染立方體然后渲染天空盒,所以立方體看不到了。


示例工程下載