順序由Camera的Depth值決定,值越小視野範圍越先渲染canvas
如Default、TransparentFX等。能夠將不一樣類別的物體劃分到不一樣的層,便於相機揀選,在相機的Culling Mask中能夠選擇渲染哪些層,不選擇的層則不會渲染,還能夠用於射線檢測對象的揀選,能夠指定只對某些層的對象進行射線檢測。markdown
canvas默認的Render Mode是Screen Space-Overlay模式,此時僅具備sort order屬性,當把它設置爲Screen Space-Camera或者World Space時,sort order屬性消失了,變成了另外兩個屬性:sorting layer,order in layer。spa
當把畫布設置爲Screen Space-Camera或者World Space後,畫布及畫布上的UI對象在世界空間默認也是靠Z值來決定渲染順序的,離相機遠的先渲染。當設置了sorting layer後,渲染的次序就由sorting layer來肯定了。sorting layer是自定義的標識符,哪一個sortinglayer在前(在layer & tags中設置的前後順序)哪一個先渲染。code
order in layer是個數值,是在同一個sorting layer內的細分,sorting layer相同時order in layer的數值越小越先渲染。orm
屏幕空間的東西都處於UI層不須要sorting layer,只提供sort order(其實也就是order in layer)。 默認狀況下sort oder都是0,此時UI物件按照在hierachy中出現的順序決定渲染順序。若是sort order不一樣時,值越小越先渲染。對象
特別注意sprite默認是個3D空間的物體,就算把它放到一個屏幕空間的canvas上,它仍然是3D空間的物體,只遵循3D空間的規則:老是會被UI擋住。排序
能夠在hierarchy中拖動元素進行從新排序來更改元素的渲染順序,還能夠在變換組件上使用SetAsFisrtSibling、SetAsLastSibling和SetSiblingIndex方法從腳原本控制渲染順序。遊戲
改變控件transform的SiblingIndex:it
transform.GetSiblingIndex();
transform.SetSiblingIndex(int index); //index值越大,越後渲染,層級越大,越顯示在前面
複製代碼
設置Canvas下的Sort Order //Sort Order值越大,越後渲染,層級越大,越顯示在前面io