UGUI之動態設置某個節點在其兄弟節點中的位置


       最近的工作任務是實現模態對話框,模態對話框彈出后要顯示在最前面,為了實現這個效果,我從網上找到了解決辦法: 通過SetSiblingIndex 和 GetSiblingIndex設置與獲取 gameObject在兄弟節點中的位置。
      我覺得GetSiblingIndex返回就是兄弟節點對應的編號,這個編號從0開始,只要修改這個編號就可以改變這個節點在所有兄弟節點中的位置。

      假設A節點為當前節點gameObject,B節點為m_sibling
gameObject.transform.SetSiblingIndex(m_sibling.transform.GetSiblingIndex());
得到的結果是原來B的位置變成A,B緊挨着A,在A下面。

        如果想交換A和B的位置,可以先保存它們的位置:
int aIndex = gameObject.transform.GetSiblingIndex();
int bIndex = m_sibling.transform.GetSiblingIndex();
gameObject.transform.SetSiblingIndex(bIndex);
m_sibling.transform.SetSiblingIndex(aIndex);

       如果想實現模態對話框顯示在最前面的效果,可以這樣做:
gameObject.transform.SetSiblingIndex(gameObject.transform.parent.childCount - 1);
      首先得到當前節點的所有兄弟節點(包括自己)個數gameObject.transform.parent.childCount,因為編號從0開始,所以還要減1(經過測試,其實不減1也可以,暫時沒有發現問題),設置為它的位置。
補充:
      實現顯示在最前,還可以用現成的方法SetAsLastSibling與我上面的效果一樣。
      相應的還有一個SetAsFirstSibling方法,是設置成第一個,也就是顯示在最后面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM