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";
}