Установите Gameobject в Canvas для Prefab сетевого игрока - PullRequest
0 голосов
/ 27 ноября 2018

Мой проект использует сетевой менеджер для загрузки префаба игрока.У меня есть игровой объект (куча текстов и 1 панель), как ребенок Холста.Холст не является ни сборным, ни ребенком сборного плеера.

У меня есть скрипт под префабом игрока, пытающийся получить активный объект игрового объекта, но я не могу установить игровой объект под префабом игрока (если только игровой объект не является префабом) или использовать код "finditwithatag".

if (Input.GetKey(KeyCode.Return) && PlayerStatMenuTimer>=1 && GameObject.FindGameObjectWithTag("PlayerStatsMenu").activeSelf==false)
{
    //code here
}

Приведенный выше код (находится под префабом скрипта игрока с функцией «Обновление») не может найти мой игровой объект с именем PlayerStatsMenu.он продолжает выдавать мне сообщение об ошибке:

"NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта PlayerController.Update () (в Assets / Evermore / PlayerController.cs: 104)"

Что я делаю не так?Есть ли другой способ сделать это?

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

GameObject.FindWithTag и GameObject.FindGameObjectsWithTag находят объекты GameObject с определенным тегом .Tag - это свойство, которое отделено от имени GameObject.Если установить для свойства тега GameObject правильное значение (например, с помощью редактора), вы сможете найти его.

Кроме того: оба эти метода находят только активные объекты GameObject.Вы не можете найти неактивные объекты GameObject по тегу, поэтому условие GameObject.FindWithTag("PlayerStatsMenu").activeSelf == false никогда не может быть истинным по определению.

Возможно, наилучшим подходом было бы поддерживать активный объект с тегами постоянно и разрешить ему иметь дочерний элемент.что вы можете активировать и деактивировать, когда пожелаете.

0 голосов
/ 27 ноября 2018

Вы используете GameObject.FindGameObjectWithTag вместо GameObject.Find.

Редактировать: Также это GameObject.FindGameObjectsWithTag.Это возвращает пустой массив, когда возражений не найдено.Вы не сможете получить доступ к массиву без индексатора, поэтому я уверен, что вам следует дважды проверить правильность написания функции в вашем коде или в вашем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...