如何将第一个孩子添加到数组列表

时间:2019-06-22 13:51:57

标签: c# unity3d

我正在尝试使用GameObject的第一个孩子创建数组或列表,以便可以从其他脚本中对其进行编辑。

我已经尝试过使用数组,但是它也需要这个孩子的孩子,我只需要第一个孩子。

我也尝试过使用带有foreach的List,但是它将在列表的每一帧中添加相同的元素,而我只需要一次。

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 :(得分:0)

这是您的操作方式:

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

甚至更好,如果您只需要执行一次-在“开始”而不是“更新”中进行操作。