获取统一的变换列表



我正在尝试获取一个派生系统的Transforms列表。我曾尝试将GameObject.FindGameObjectsWithTag与数组一起使用,而不是列表,而且数组似乎需要是GameObjects而不是Transforms,因为这就是它想要的。我也尝试过另一段代码,但它只返回一个随机的列表转换,如下所示:

public List<Transform> t;
void Start()
{
t.Add(GameObject.FindWithTag("Spawn").transform);
}

正如您在我的代码中看到的,它只会向我的列表中添加一个Transform。我希望添加多个变换,而不是仅添加一个变换。

您可以像一样使用LinqSelect

using System.Linq;
...
public List<Transform> t;
void Start()
{
t = GameObject.FindGameObjectsWithTag("Spawn").Select(go => go.transform).ToList();
} 

这基本上等于做

var array = GameObject.FindObjectsWithTag("Spawn");
t = new List<Transform>(array.Length);
foreach(var go in array)
{
t.Add(go.transform);
}

游戏对象数组:

GameObject[] gos;
gos = GameObject.FindGameObjectsWithTag("Enemy");

获取转换:

gos[0].transform

制作转换列表:

public List<Transform> t;
foreach (GameObject go in gos)
{
t.Add(go.transform);
}

添加这些"产卵";对象在创建时添加到列表中,而不是在创建后尝试查找它们。这是一种选择吗?

例如:

GameObject spawn = Instantiate(spawnObj);
t.Add(spawn.transform);
public List<Transform> t;
public List<GameObject> go; //GameObjects where youl look for
void Start()
{
for (int i = 0; i < go.Count; i++)
{
if (go[i].tag == "Spawn")
{t.Add(go[i].transform);}
}
}

最新更新