Как использовать FindGameObjectsWithTag с transform.position - PullRequest
0 голосов
/ 26 сентября 2018

Привет всем, может кто-нибудь подсказать мне, как мой враг может преследовать более 1 цели с помощью тега ("Человек")?Кажется, что

target = GameObject.FindGameObjectsWithTag("Human").GetComponent<Transform>();

Преобразование не применимо, чтобы использовать это.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

@ Программист неплохое решение, но, поскольку я узнал больше об эффективности 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 объект.

0 голосов
/ 26 сентября 2018

Функция GameObject.FindGameObjectsWithTag возвращает массив GameObject.Вы можете использовать его следующим образом:

GameObject[] target = GameObject.FindGameObjectsWithTag("Human");

Если вам нужен массив Transform, создайте новый массив с размером GameObject, возвращаемым GameObject.FindGameObjectsWithTag, затем скопируйте его в цикле.Вам не нужна функция 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...