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)