Last Updated on 2021-10-30 by Clay
今天我要紀錄的,是在 Unity 中如何透過 SetSiblingIndex()
函式來設定子物件在父物件體下的『順序』。
這乍看之下是不太重要的功能。不過,當我今天在生成大量物件的時候,我碰到一個奇怪的問題:有時候『較早生成的物件』會擋住『較晚生成的物件』;有時候則是『較晚生成的物件』會擋住『較早生成的物件』。
這樣一來,我根本無法好好地設計場景。直到最後我乾脆在生成所有物件時,直接給它們各自設定了順序才解決。
使用方法
假設 objectList
是一個 List<GameObject>
資料型態的物件,裡頭放了我們生成的子物件。我們可以使用以下指令賦予他們順序(不過若是父物件底下還有其他物件,則需要小心計算子物件總數)。
for (int i=0; i<objectList.Count; ++i) {
objectList[i].gameObject.transform.SetSiblingIndex(i);
}
References
- https://docs.unity3d.com/ScriptReference/Transform.SetSiblingIndex.html
- https://docs.unity.cn/ScriptReference/Transform.SetSiblingIndex.html