UGUI Canvas SortingLayer決定了該Canvas下面的全部子物體的SortingLayer,一個Canvas下面的子物體按照上下順序排序,越靠前的越容易被遮擋,當子物體擁有Canvas組件時,渲染隊列將被重寫,該物體的遮擋關係取決於當前物體的Canvas的orderInLyaer,因此UI應該優先按照Layer排序,而後贊成Layer按照OrderInLayer進行排序,同一個OrderInLayer的Canvas下,按照上下順序排序。
特效一樣支持sortingOrder與sortingLayerName,當特效與UI的sortingLayerName一致時,調整特效的sortingOrder能夠調整特效在UI中的顯示位置,例如特效須要加在A的上面,特效的在orderLayerName一致的狀況下,sortingOrder應該大於A的Canvas(從A往上找其父物體,第一個帶Canvas的父物體的Canvas就是A的Canvas,A自己能夠沒有Canvas,此處Canvas相似於NGUI的panel概念)的sortingorder,若是特效要在A,B中間,那麼A,B應該在2個不一樣的Canvas下面,特效的sortingorder也在A,B 2個Canvas的sortingOrder中間。
特效須要掛的腳本
Renderer []renders = GetComponentsInChildren<Renderer>();
if(renders == null)
return;
for(int i = 0; i < renders.Length; i++){
renders[i].sortingOrder = order;
renders[i].sortingLayerName = "Default";
}