2016-06-30 8 views
1

Es ist eine Art seltsame Dinge, aber wenn Sie versuchen, Kinder Objekte mit DestroyImmediate Funktion zu zerstören, dann haben Sie unvorhergesehene Ergebnis.Wie können wir untergeordnete Objekte im Bearbeitungsmodus (Unity3d) zerstören?

In meinem Fall hat Unity nicht alle Kinder zerstört, aber nur für die Hälfte von ihnen.

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

Von Unity-Dokument auf 'DestroyImmediate': _Also Beachten Sie, dass Sie niemals Arrays durchlaufen und die Elemente zerstören sollten, über die Sie iterieren. Dies wird zu ernsthaften Problemen führen (als allgemeine Programmierpraxis, nicht nur in Unity). Https://docs.unity3d.com/ScriptReference/Object.DestroyImmediate.html –

Antwort

2

Wie ein Typ in Verbindung betrachten, ist es möglich, mit der Erstellung von Temp Array/Liste.

Zum Beispiel:

 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); 
     } 

Link, der mir geholfen hat: http://answers.unity3d.com/answers/678073/view.html

0

Dies ist, wie ich Kinder im Bearbeitungsmodus zu zerstören:

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