Проблемы дочернего Canvas или динамический интерфейс [решен]

Общие вопросы о Unity3D

Проблемы дочернего Canvas или динамический интерфейс [решен]

Сообщение TonyMax 18 окт 2016, 21:25

Ситуация такая: мне нужно при выделении игрового объекта показывать на экране его элементы интерфейса. Например - выделяем воина и на экране показывается его характеристики. Игровые объекты добавляются на сцену динамически по решению игрока, так что закрепить связь между игровым объектом и элементом интерфейса до добавления этого самого объекта на сцену не получится.

a) Самый изящный вариант решения, как мне кажется, был такой: я создавал в префабе игрового объекта canvas с необходимыми элементами и включал его при выделении игрового объекта.
Проблема оказалась в том, что, если canvas является дочерним объектом на сцене, а позиция его родителя не (0,0,0), то canvas (при включенном screen space - overlay режиме рендера) "вылезает" за пределы экрана.

b) Второй вариант решения есть такой: все элементы интерфейса я вешаю на обычный canvas без родителя, объединяю их в логические группы, определяющие их отношение к конкретному игровому объекту. Вешаю на эти группы уникальные тэги, и при добавлении игрового объекта на сцену в start() произвожу поиск по тэгу и получаю единовременно ссылку на интересующий меня элемент интерфейса. Мне не хочется так делать, потому что функция поиска по тэгу или классу очень нагрузочная, даже при условии использования её один раз при start()

Может, вы подскажите какой-нибудь другой вариант или как изменить 1ый, чтобы отображалось всё удовлетворительно.
Последний раз редактировалось TonyMax 19 окт 2016, 00:09, всего редактировалось 2 раз(а).
TonyMax
UNец
 
Сообщения: 40
Зарегистрирован: 23 июн 2016, 14:54

Re: Проблемы дочернего Canvas или динамический интерфейс [решен]

Сообщение TonyMax 19 окт 2016, 00:11

Решение: берем tranform нашего canvas и .parent = null
Canvas становится в (0;0;0), ссылки расставлены
TonyMax
UNец
 
Сообщения: 40
Зарегистрирован: 23 июн 2016, 14:54

Re: Проблемы дочернего Canvas или динамический интерфейс [решен]

Сообщение immeasurability 25 окт 2016, 19:13

как вариант:
есть юнит
у юнита ссылка на префаб ui панели
на сцене основной сингл канвайс
при открытии свойств юнита создаем панель из ссылки префаба юнита в сингл канвайсе
префаб панели имеет свой контроллер который получает данные о персонаже
юнит->open_info(юнит)
контроллер заполняет созданную панель в сингл канвайсе

получаем возможность оперативно менять интервейс, без прохождения по всем юнитом по канвайсам

с твоим вариантом:
Решение: берем tranform нашего canvas и .parent = null
Canvas становится в (0;0;0), ссылки расставлены

начинаются проблемы когда меняется дизайн или дополняется функционал интерфейса
Discord era#6140

youtube.com/user/immeasurability/videos
Аватара пользователя
immeasurability
Адепт
 
Сообщения: 1097
Зарегистрирован: 08 авг 2013, 18:09


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2