1. 程式人生 > >NGUI中處理層級問題的幾個方法總結

NGUI中處理層級問題的幾個方法總結

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即可