Ihr Fall geht zu arbeiten, nicht, wie Sie Linq erwarten verwenden. Eine Sache, die Sie tun können, ist die Verwendung einer Erweiterungsmethode wie unten gezeigt.
public static class Extension{
public static IEnumerable<Transform> GetChildren(this Transform tr)
{
List<Transform> children = new List<Transform>();
foreach (Transform child in tr)
{
children.Add(child);
}
// You can make the return type an array or a list or else.
return children as IEnumerable<Transform>;
}
}
und verwenden Sie es als:
IEnumerable<Transform> trs = parent.GetChildren();
EDIT: die Magie passiert auf dem dieses Schlüsselwort in den Parameter. Die Methode wird von der Instanz aufgerufen, ist aber tatsächlich statisch. Die aufrufende Instanz wird zur Parameterliste hinzugefügt. Ohne zu tief zu gehen, wird eine statische Methode für eine Instanz verfügbar gemacht. Sie benötigen keinen zusätzlichen Code, wenn Sie nicht in einem bestimmten Namespace platziert werden.
'children.AddRange (Eltern)' wenn „Eltern“ ist eine Liste von Kindern. Edit: Wusste nicht Transform implementiert IEnumerable. Cool! – Maakep
Eltern ist eine Transformation, Entschuldigung für die Verwirrung. – Alox
Transformation ist eine für Unity's MonoBehaviour spezifische Klasse. Es enthält Informationen über die Position, Rotation und Skalierung eines GameObjects und implementiert IEnumerable, das auf seinen untergeordneten Elementen iteriert. – Maakep