1. 程式人生 > >unity程式碼修改子物體層級的順序

unity程式碼修改子物體層級的順序

我在實踐中發現,同一個canvas中的物體,排列順序越往下,最終渲染順序就越後,也就是圖形會覆蓋在先前的圖形上。也就是說,運行遊戲後,物體的渲染順序是一個一個計算的,個人感覺操作順序是根據Hierarchy層級面板從上往下的順序(有子物體是深度優先還是廣度優先?),UI渲染也不例外。
GameOver在最上效果圖
GameOver在最下效果圖

所以的話,在同一個canvas中,物體的的排列順序會直接影響最後UI介面的顯示效果。因為遊戲中一般會動態產生物體,所以需要使用程式碼來調整子物體的順序。下面給出untiy5.x版本的指令碼,對於4.x的話,自己對照著呼叫相關函式:

    int count = parentTransform.childCount;
    //引數為物體在當前所在的子物體列表中的順序
    //count-1指把child物體在當前子物體列表的順序設定為最後一個,0為第一個
    childTransform.SetSiblingIndex(count - 1);

歡迎指正,共同進步!