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

2021-08-19 19:09:56 字數 1043 閱讀 1634

最近的工作任務是實現模態對話方塊,模態對話方塊彈出後要顯示在最前面,為了實現這個效果,我從網上找到了解決辦法:

通過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方法,是設定成第乙個,也就是顯示在最後面。

設定UGUI尺寸

一 recttrans.sizedelta new vector2 x,y 對sizedelta進行賦值!分兩種情況 1,recttransform的錨點anchors stretch狀態 拉伸,2個錨點 1.1 上下拉伸 top 和 bottom的距離的絕對值 y 1.2左右拉伸 left 和 r...

UGUI 動態切換Sprite

現實情況 ugui 沒法方便的 類似ngui通過直接修改圖集spritename 來切換sprite資源,而是需要先載入,然後把 載入到的sprite 賦值給物件的 sptieobj.overridesprite 屬性來實現。1.texture資源沒被裁切時,直接載入使用即可 private voi...

uGUI動態載入控制項位置錯誤

最近在使用ugui時遇到了乙個問題,在此記錄一下。在canvas的render mode設定為screen space overlay模式時,動態載入控制項是不會發生問題的。但是在screen space camera模式下,動態載入的控制項位置及縮放會有很大的偏差。private canvas c...