查找阵列的所有变换?

时间:2016-02-24 23:05:16

标签: c# unity3d

我试图获取敌人大炮的所有变形,所以我将enemyCans变量声明如下:

GameObject[] enemyCans;

然后,我在start()方法中为其分配了以下值:

enemyCans = GameObject.FindGameObjectsWithTag("EnemyCannon").transform;

但是,我在这里使用.transform就像我在分配我的播放器变换值时那样:

player= GameObject.FindGameObjectWithTag("Player").transform;

我知道这可能与enemyCans是一个数组有关,但我不确定如何获得这些转换值。

2 个答案:

答案 0 :(得分:1)

这与enemyCans是一组游戏对象(GameObject[])的事实有关。

如果您想要变换,则必须遍历enemyCans数组并单独检索每个变换。

我希望有所帮助!

修改 完全归功于@ Orphid在下面给出的建议。 对于OP的澄清,您需要使用Linq(namespace System.Linq)。另外在末尾添加ToArray()以将其转换为数组。

示例:

Transform[] enemyXforms = 
GameObject.FindGameObjectsWithTag("EnemyCannon").Select(cannon => cannon.transform).ToArray();

答案 1 :(得分:1)

如果问题与作为数组的类型有关,比如

foreach(var cannon in GameObject.FindGameObjectsWithTag("EnemyCannon"))
{
  //aggregate result here
}

如果它只是一个数组,你也可以选择这样的变换:

GameObject.FindGameObjectsWithTag("EnemyCannon").Select(cannon => cannon.transform);