这有点奇怪,但是如果你试图用DestroyImmediate
函数来破坏子对象,那么你将得到不可预知的结果。
在我看来,Unity并没有摧毁所有的孩子,只为其中一半孩子做了这件事。
foreach(var child in parent)
{
DestroyImmediate(child);
}
答案 0 :(得分:3)
这就是我在编辑模式下摧毁孩子的方法:
for (int i = this.transform.childCount; i > 0; --i)
DestroyImmediate(this.transform.GetChild(0).gameObject);
答案 1 :(得分:2)
正如一个人在链接中考虑的那样,可以创建临时数组/列表。
例如:
var tempArray = new GameObject[parent.transform.childCount];
for(int i = 0; i < tempArray.Length; i++)
{
tempArray[i] = parent.transform.GetChild(i).gameObject;
}
foreach(var child in tempArray)
{
DestroyImmediate(child);
}