Ich versuche, alle Kinder eines Gameobject zu einem anderen zu wechseln.Unity3D: Ausgabe in durch die Kinder Schleife während sie Neuzuordnung
foreach (Transform child in transform) {
child.parent = new_parent.transform;
}
Dieser Code trennt die Kinder teilweise und lässt ein paar Kinder zurück in den ursprünglichen Elternteil. Ich verwende den folgenden Code, um die obige Operation durchzuführen.
foreach (Transform child in transform) {
child.tag = "collected";
}
GameObject[] collected = GameObject.FindGameObjectsWithTag ("collected");
foreach (Transform child in collected.transform) {
child.transform.parent = new_parent.transform;
}
Und das funktioniert perfekt. Ich habe auch zusammen mit parent.GetChild(i)
und ähnliches Problem passiert. Wo vermisse ich?
Gibt es eine Muster zu den Objekten, die weggelassen werden? – Serlite
Es klingt wie Sie im Wesentlichen Elemente aus der „Liste“ von Kindern, wie Sie Schleife durch sie und ändern ihre Eltern zu entfernen können. Wenn ein "Kind" entfernt wird und sich die Liste verschiebt, verfehlt das nächste "Kind" seinen Zug in der Warteschlange. In der zweiten Schleife ist jedes "Kind" kein Kind von "gesammelt" (wie die erste Schleife) und daher können Sie das gesamte Array von 'collected' durchlaufen und die Eltern ändern, die sie nicht als Elemente des Array. – ryeMoss