C# 如何在编辑模式(Unity3d)中销毁子对象?

C# 如何在编辑模式(Unity3d)中销毁子对象?,c#,unity3d,C#,Unity3d,这是一种奇怪的事情,但如果您试图使用destroimmediate函数销毁子对象,那么您将得到不可预测的结果 就我而言,团结并没有摧毁所有的孩子,但只摧毁了其中的一半 foreach(var child in parent) { DestroyImmediate(child); } 一个人考虑链接时,可以创建临时数组/列表。 例如: var tempArray = new GameObject[parent

这是一种奇怪的事情,但如果您试图使用
destroimmediate
函数销毁子对象,那么您将得到不可预测的结果

就我而言,团结并没有摧毁所有的孩子,但只摧毁了其中的一半

        foreach(var child in parent)
        {
            DestroyImmediate(child);
        }

一个人考虑链接时,可以创建临时数组/列表。

例如:

        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);
        }
var tempArray=newgameobject[parent.transform.childCount];
for(int i=0;i
帮助我的链接:
这就是我在编辑模式下销毁子项的方式:

for (int i = this.transform.childCount; i > 0; --i)
    DestroyImmediate(this.transform.GetChild(0).gameObject);

从Unity关于
destroy immediate
的文档中:还要注意,您不应该迭代数组,也不应该破坏正在迭代的元素。这将导致严重的问题(作为一般编程实践,而不仅仅是Unity)。其他注意事项:此处强调以递减方式迭代,并使用
GetChild(0)
而不是
GetChild(i)