大家好,有人可以给我一种方法,让我的敌人如何使用标签(“人类”)追赶多个目标吗?看来
target = GameObject.FindGameObjectsWithTag("Human").GetComponent<Transform>();
转换不适用于此功能。
答案 0 :(得分:2)
GameObject.FindGameObjectsWithTag
函数返回一个GameObject数组。您将这样使用它:
GameObject[] target = GameObject.FindGameObjectsWithTag("Human");
如果您需要Transform
的数组,请使用GameObject.FindGameObjectsWithTag
返回的GameObject的大小创建一个新数组,然后将其复制到一个循环中。您不需要GetComponent
函数。 transform
属性应在此处使用。
GameObject[] target = GameObject.FindGameObjectsWithTag("Human");
Transform[] targetTransform = new Transform[target.Length];
//Copy the GameObject transform to the new3 transform array
for (int i = 0; i < target.Length; i++)
{
targetTransform[i] = target[i].transform;
}
答案 1 :(得分:0)
@Programmer是一个不错的解决方案,但是随着我对ECS效率的更多了解并构建一个干净的解决方案,可能如下。将来还会有更大的适应性。
[System.Serializeable]
public struct Human {
Transform transform;
}
GameObject[] targets = GameObject.FindGameObjectsWithTag("Human");
List<Human> humans = new List<Human>();
foreach (GameObject target in targets) {
Human human = new Human();
human.transform = target.transform;
humans.add(human);
}
它看起来较慢,可能是初始设置,但不会访问。如果您不需要,则不应该处理直线数组,现在您有了一个可扩展的Human
对象。