育兒與兒童
Unity 與層次結構一起使用以保持專案的有序性。你可以使用編輯器在層次結構中為物件分配位置,但你也可以通過程式碼執行此操作。
育兒
你可以使用以下方法設定物件的父級
var other = GetOtherGameObject();
other.transform.SetParent( transform );
other.transform.SetParent( transform, worldPositionStays );
每當你設定變換父項時,它都會將物件的位置保持為世界位置。你可以通過為 worldPositionStays 引數傳遞 false 來選擇使此位置相對。 **
你還可以使用以下方法檢查物件是否是另一個轉換的子物件
other.transform.IsChildOf( transform );
生孩子
由於物件可以彼此成為父物件,因此你還可以在層次結構中找到子物件。最簡單的方法是使用以下方法
transform.Find( "other" );
transform.FindChild( "other" );
注意:FindChild 呼叫查詢引擎蓋
你還可以在層次結構的下方搜尋子項。你可以通過新增“/”來指定更深層次。
transform.Find( "other/another" );
transform.FindChild( "other/another" );
獲取孩子的另一種方法是使用 GetChild
transform.GetChild( index );
GetChild 需要一個整數作為索引,該整數必須小於總子計數
int count = transform.childCount;
改變兄弟姐妹指數
你可以更改 GameObject 子項的順序。你可以這樣做來定義子項的繪製順序(假設它們處於相同的 Z 級別和相同的排序順序)。
other.transform.SetSiblingIndex( index );
你還可以使用以下方法快速將兄弟索引設定為第一個或最後一個
other.transform.SetAsFirstSibling();
other.transform.SetAsLastSibling();
分離所有兒童
如果要釋放轉換的所有子項,可以執行以下操作:
foreach(Transform child in transform)
{
child.parent = null;
}
此外,Unity 為此提供了一種方法:
transform.DetachChildren();
基本上,迴圈和 DetachChildren()
都將第一深度孩子的父母設定為 null - 這意味著他們沒有父母。
(第一個深度的孩子:直接變換的子變換)