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

Vla*_*myh 5 c# unity-game-engine

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

在我的例子中,Unity 并没有销毁所有的孩子,而是只销毁了其中的一半。

        foreach(var child in parent)
        {
            DestroyImmediate(child);
        }
Run Code Online (Sandbox Code Playgroud)

小智 13

这就是我在编辑模式下摧毁孩子的方式:

for (int i = this.transform.childCount; i > 0; --i)
    DestroyImmediate(this.transform.GetChild(0).gameObject);
Run Code Online (Sandbox Code Playgroud)

  • 其他注意事项:这里强调递减迭代和使用`GetChild(0)`而不是`GetChild(i)` (6认同)

Vla*_*myh 4

正如一个人在链接中考虑的那样,可以创建临时数组/列表。

例如:

        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);
        }
Run Code Online (Sandbox Code Playgroud)

对我有帮助的链接: http ://answers.unity3d.com/answers/678073/view.html