NGUI中處理層級問題的幾個方法總結
阿新 • • 發佈:2018-11-01
1、獲得ui介面的UIPanel的最大層級:
1 static int GetUIMaxDepth(Transform root) 2 { 3 UIPanel[] panels = root.GetComponentsInChildren<UIPanel>(false); 4 if (panels == null || panels.Length < 1) 5 return 0; 6 7 Array.Sort(panels, (a, b) => a.depth - b.depth);8 UIPanel lastPanel = panels.LastOrDefault(); 9 return lastPanel != null ? lastPanel.depth : 0; 10 }
2、設定ui介面中UIPanel的層級:
1 static void SetUIDepth(Transform root, int depth) 2 { 3 UIPanel[] panels = root.GetComponentsInChildren<UIPanel>(true); 4 if (panels == null || panels.Length < 1) 5 return; 6 7 Array.Sort(panels, (a, b) => a.depth - b.depth); 8 for (int i = 0; i < panels.Length; i++) 9 { 10 UIPanel p = panels[i]; 11 if (p != null) 12 p.depth = i + depth; 13 } 14 }
3、遊戲中開啟的UI一般是儲存在一個集合中的。當需要給新的UI設定層級的時候,只需要通過一個迴圈遍歷,找出已開啟的UI中的最大層級,然後在此基礎上加1,即 max + 1,然後將 max +1賦值給新開啟的UI即可