GameObjects SystemEvent Prefab не работает - PullRequest
0 голосов
/ 30 января 2019

У меня есть кнопка Prefab .Он подключен к префабу EventSystem и выбирает метод с именем (doIt).

enter image description here

Этот метод (doIt) выводит сообщение на печать и активирует панель под названием (Panel).

public void doIt()
{
    print("Doing !!!");
    helpCanvas.SetActive(true);
}

EventSystem Prefab имеет скрипт, к которому уже подключен метод (doIt) и gameObject (Button)

enter image description here

Панель Prefab неактивна

enter image description here

Я перетащил эти Prefab (Button, EventSystemи панель) в некоторых сценах (около 17 сцен), подобных этому.

enter image description here

Проблема: Когда я играю в игруничего не происходит, когда я нажимаю кнопку

enter image description here

, но панель становится активной сразу после остановки игры

enter image description here

Примечание: Это происходило только в том случае, если экземпляр SystemEvent зависит от prefab, но если я перетащил панель вручную из сцены enter image description hereа также экземпляра SystemEvent для OnClick этого не произошло enter image description here

Почему это произошло?и как это решить?Ни мне, ни кому-либо не подходит повторно присоединять Button OnClick EventSystem вручную для всех кнопок, имеющих одинаковую функцию.Или присоединить экземпляр Panel к каждому экземпляру EventSystem.

1 Ответ

0 голосов
/ 30 января 2019

Сборные не могут иметь ссылки на объекты в сцене.Это происходит потому, что каждый раз, когда Unity создает экземпляр префаба, как он должен знать, находится ли объект, на который ссылается, все еще там.Обходной путь - добавить компонент сценария в свой сборный элемент, а затем создать внутри него функцию, которая выполняет необходимые действия.Ваш префаб кнопки может иметь ссылку только на вещи, которые являются локальными для него (не зависит от сцены, будет присутствовать каждый раз, когда создается префаб).После того, как вы создадите экземпляр объекта, ваш мастер-скрипт может выполнить buttonInstantiatedPrefabName.GetComponent (). Evsys = evsys;Таким образом, все ваши ссылки на редакторы будут сохранены в главном скрипте, который назначит его другим объектам gameObject, которые создаются из префабов.

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