Unity3d獲取和正確刪除所有子物體
阿新 • • 發佈:2019-01-31
參考文章:
核心程式碼:
foreach (Transform childTr in transform) { Debug.Log("childTr子物體名字:"+childTr.gameObject.name); }示例:
示例中要注意的一點是,遍歷foreach刪除的方法只在執行時Destroy有延遲時有效,最好還是要將它儲存到一個LIST裡面,然後用for迴圈一個個去刪。當然下面這樣也行,每次都獲取一下索引的子物體,刪除即便延遲也沒問題。List lst = new List; foreach (Transform child in transform) { lst.Add(child); Debug.Log(child.gameObject.name); } for(int i = 0;i < lst.Count;i++) { Destroy(lst[i].gameObject); }
for (int i = tr.childCount - 1; i >= 0; i--) {
Destroy(tr.GetChild(i).gameObject);
}
Destroy操作是延遲的,物件會活到幀的結尾,然後必定銷燬。object destruction 是在所有的 update 執行之後的,所以在update之後才算真正銷燬,update結束前還可以繼續呼叫和響應委託等。如果