1. 程式人生 > >Unity中的幾種層級關係優先順序總結

Unity中的幾種層級關係優先順序總結

前言

在專案中,我們經常需要處理顯示物件的層級關係或規劃層級結構,那麼Unity中主要有哪些主要的層級關係及他們的優先順序是怎麼樣的呢?

Camera

首先是Camera,Camera的depth值越大的在上面,越小的在下面,比如場景有一個相機,UI層有一個相機,那麼我們就可以將場景相機的Depth設定成0,UI相機的Depth設定成1。UI就會高於場景顯示了。

Sorting Layers

如果Camera相同,那接下來就看Sorting Layers,Sorting Layers是通過Renderer的sortingLayerName屬性設定的,那麼這個Sorting Layers的名字又是在哪設定,以及名字之間的順序是怎麼定的呢?這個Soring Layers是在Edit->ProjectSettings->Tags&Layers中設定的,如圖:這裡設定了Default和Effect兩個Layers,Effect的層級比Default的高。
image


可以通過程式碼設定render.sortingLayerName=”Effect”,如果在粒子系統中看,可以看到Render項的Sorting Layers下拉表單中會列出所有的Sorting Layers的名字

sortingOrder

如果Camera相同,SortingLayers相同的情況下呢?
那就要比較soring Order了,soringOrder也是Render的一個屬性,這個order是設定一個數字,數字越大,越在上面顯示。

renderQueue

如果上述幾項都相同,那就要看renderQueue了,renderQueure是Material的一個屬性,其實就是Shader中的renderQueue,這個也是一個int屬性,數值越大,越在上面。

方案

根據上面的層級,我寫了一個萬能層級調整指令碼,如果遇到層級遮擋問題不好解決時,可以試著用一下,這個指令碼也能解決粒子的層級(注:此指令碼使用不當會增加drawCall,所以不到萬不得已最好不用,更不要濫用)。指令碼連結地址[點我](連結: https://pan.baidu.com/s/1X4h54MwZlD0vD1FWmArXEQ 密碼: msrj)

總結

以上就是Unity中層級組織的總結,如遇到層級問題,可以按上面幾項,排查思考一下,一般都能解決