Добавление детей gameOjects в массив? - PullRequest
0 голосов
/ 24 февраля 2020

Я добавляю дочерние объекты gameObjects в массив. Этот скрипт ниже прикреплен к родительскому gameObject. Я помещаю все дочерние объекты в массив, но, к сожалению, даже родительский объект добавляется в массив. Как удалить родителя из массива?

public Transform[] children;

// Use this for initialization
void Start () {
   children= GetComponentsInChildren<Transform>();
}

// Update is called once per frame
void Update () {
    foreach (Transform i in children)
    {
       ...
    }

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Обычно это вам не нужно!

Скорее, если вы хотите, чтобы прямые (первого уровня) дети просто перебирали родительский элемент Transform

var childrenList = new List<Trasnform>();
foreach(Transform child in transform)
{
    // This iterates over all direct children, not the parent

    childrenList.Add(child);
}

Transform[] children = childrenList.ToArray();

Или да, если вам также нужны вложенные дети, которые вы можете использовать

using System.Linq;

...

Transform[] children = GetComponentsInChildren<Transform>(true).Where(child => child != transform).ToArray();
1 голос
/ 24 февраля 2020

Возможно, это не самый эффективный способ добиться этого, но вы можете попробовать этот подход,

var transforms = GetComponentsInChildren<Transform>();
foreach(var transform in transforms)
{
   //ignore parent
    if(transform == this.transform)
        continue;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...