Я следую учебнику (точно survival shooter), и я нахожусь на стадии реализации NavMesh. Их первоначальный сценарий таков:Отслеживание трансформации игрового объекта - Почему использование FindGameObjectWithTag не работает?
Transform _player;
NavMeshAgent nav;
void Start()
{
_player = GameObject.FindGameObjectWithTag("Player").transform;
nav = GetComponent<NavMeshAgent>();
}
void Update()
{
nav.SetDestination(_player.position);
}
Пока ничего особенного. Я нажимаю игру и, как ни странно, враг (у меня только один в данный момент на сцене) достигает начального положения игрока (0,0,0) вместо того, чтобы следить за ним, если игрок движется. Я понял, что позиция игрока не обновляется в поле _player
, и он остается на 0,0,0
.
Я пробовал другой подход: я перетащил игровой объект Игрока на свойство в пользовательском интерфейсе (сначала я сделал свойство публичным, и я изменил его на GameObject
). В этом случае он работает безотказно:
GameObject _player;
NavMeshAgent nav;
void Start()
{
//Player is not retrieved here as before, but it's passed assigning the GameObject to the property directly through the UI
nav = GetComponent<NavMeshAgent>();
}
void Update()
{
nav.SetDestination(_player.transform.position);
}
На этом этапе я задаюсь вопросом:
ли FindGameObjectWithTag
метод сделать копию объекта, а не возвращает ссылку на GameObject
? Почему это не работает в первом случае. Кстати, я использую Unity 5.
Я воссоздал ситуацию, и я верю, что FindGameObjectWithTag() возвращает копию объекта в момент его вызова. Чтение документации по этому методу, похоже, подтверждает это, поскольку упоминание ссылки отсутствует. –
Единственное, что у меня в голове, это то, что игровой объект неактивен в то время, так что FindGameObjectWithTag не обнаружит его. –
Что-то, что стоит попробовать, это использовать ['FindGameObjectsWithTag'] (http://docs.unity3d.com/ScriptReference/GameObject.FindGameObjectsWithTag.html) и посмотреть, возвращено ли больше чем одна вещь. Возможно, тот, который вы получаете, подобен сборнику, который не движется или что-то еще. –