Как добавить первого ребенка в Array-List - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь создать массив или список с первыми дочерними элементами GameObject, чтобы я мог редактировать их из других сценариев.

Я пробовал это делать с массивом, но это займет дочерние объектыэтого потомка тоже, и мне нужно взять только первые.

Я пробовал также с List с foreach, но он будет добавлять один и тот же элемент каждый кадр в список, и мне нужен только одинвремя.

public GameObject GOGranjaTerrain;
public GameObject GOFabricaTerrain;
public GameObject GOOficinaTerrain;

public Transform[] granjaTerrainArray;
public Transform[] fabricaTerrainArray;
public Transform[] oficinaTerrainArray;

public List<Transform> granjaTerrainList = new List<Transform>();

void Update()
{
    SearchTerrains1();
    SearchTerrains2();
}

//Array way
void SearchTerrains1()
{
    granjaTerrainArray = GOGranjaTerrain.GetComponentsInChildren<Transform>();
    fabricaTerrainArray = GOFabricaTerrain.GetComponentsInChildren<Transform>();
    oficinaTerrainArray = GOOficinaTerrain.GetComponentsInChildren<Transform>();
}

//List way
void SearchTerrains2()
{
    foreach(Transform child in GOGranjaTerrain.transform)
    {
        granjaTerrainList.Add(child);
    }
}

1 Ответ

0 голосов
/ 22 июня 2019

Вот как вы можете это сделать:

void Update()
{
    for (int i = 0; i < GOGranjaTerrain.transform.childCount; i++)
    {
        Transform child = GOGranjaTerrain.transform.GetChild(i);
        if (granjaTerrainList.Contains(child) == false)
        {
            granjaTerrainList.Add(child);
        }
    }
}

Или даже лучше, если вам нужно сделать это только один раз - введите в Start вместо Update.

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