最近的工作任務是實現模態對話框,模態對話框彈出后要顯示在最前面,為了實現這個效果,我從網上找到了解決辦法:
通過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方法,是設置成第一個,也就是顯示在最后面。