Unity3dでGameObjectのすべての子オブジェクトを削除する方法



How Remove All Child Objects Gameobject Unity3d



ゲームを開発するとき、経験はそのような要件に遭遇します:リーダーボードリストの更新、リストのクリアなど、オブジェクトの下のすべてのサブオブジェクトを削除します。Unity3dは操作するための既製のAPIをいくつか提供しますが、すべてを正しく削除しますオブジェクトの下のサブオブジェクトでは、いくつかの問題に注意を払う必要があります。

  1. TransfromのchildCountプロパティを使用すると、現在のオブジェクトに含まれる子の数を取得できます。
parent.transform.childCount
  1. transform.get(index)メソッドによって返されるのは、子オブジェクトの変換です。直接削除するのは間違っています
Transform transform for(int i = 0i
  1. 削除プロセス中、childCountの数はすぐには変更されません。次の書き込み方法は間違っており、無限ループが発生します
while(parent.transform.childCount > 0) { Transform transform = parent.transform.GetChild(0) GameObject.Destroy(transform.gameObject) }
  1. もう1つのエラーは、DetachChildrenを呼び出すことです。このメソッドは子ゲームオブジェクトを削除しませんが、親子関係をキャンセルするだけです。すべての子オブジェクトは、シーン内のオブジェクトに直接なります。
parent.transform.DetachChildren()
  1. 正しい取り外しは次のようになります
public static void RemoveAllChildren(GameObject parent) { Transform transform for(int i = 0i

、.Png