Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > 2D/GUI

2D/GUI Вопросы на тему 2D графики и интерфейсов

Ответ
 
Опции темы
Старый 29.01.2016, 21:25   #1
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Несколько меню в игре

В-общем, снова желаю посоветоваться на предмет "Не фигню ли я делаю?"
Встала такая задача:

Есть GUI (который юнитовский современный, не Legacy) в игре: счётчик здоровья, очков, патронов, кнопка паузы и т.д.

По нажатию на кнопку паузы надо сделать показ дополнительных кнопок ("выйти в главное меню", "настройки" и т.д.)

Собственно, я вздумал сделать отдельный Canvas под них и показывать только в определённый момент. Кстати, в "настройках" тоже будут свои пункты, под них тоже отдельный Canvas.

Собственно, не много ли канвасов я собираюсь наплодить? Стоит ли делать как-то иначе, или выше описан нормальный подход?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 29.01.2016, 21:32   #2
Антихрист
Разработчик
 
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений
(для 412 пользователей)
Ответ: Несколько меню в игре

Сообщение от ABTOMAT Посмотреть сообщение
В-общем, снова желаю посоветоваться на предмет "Не фигню ли я делаю?"
Встала такая задача:

Есть GUI (который юнитовский современный, не Legacy) в игре: счётчик здоровья, очков, патронов, кнопка паузы и т.д.

По нажатию на кнопку паузы надо сделать показ дополнительных кнопок ("выйти в главное меню", "настройки" и т.д.)

Собственно, я вздумал сделать отдельный Canvas под них и показывать только в определённый момент. Кстати, в "настройках" тоже будут свои пункты, под них тоже отдельный Canvas.

Собственно, не много ли канвасов я собираюсь наплодить? Стоит ли делать как-то иначе, или выше описан нормальный подход?
Из справки: Одного холста для всех UI-элементов вполне достаточно, но и несколько холстов в сцене допустимо. Также, возможно использование нескольких холстов, когда один выставляется дочерним элементом другого, для оптимизации. Вложенный холст использует тот же режим рендеринга (Render Mode), что и родитель.

От себя: У меня большое кол-во канвасов отражалось на производительности(чекал в профаилере), поэтому использовал Panel,которые скрывал/показывал простым setactive().
(Offline)
 
Ответить с цитированием
Старый 29.01.2016, 21:51   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Несколько меню в игре

Одного холста для всех UI-элементов вполне достаточно, но и несколько холстов в сцене допустимо.
Ну, тут вопрос в удобстве показывания/скрытия.

У меня большое кол-во канвасов отражалось на производительности
А вот это уже ценное замечание! И сильно? Тогда, наверное, действительно нафиг.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 29.01.2016, 22:18   #4
Антихрист
Разработчик
 
Регистрация: 20.01.2007
Сообщений: 485
Написано 182 полезных сообщений
(для 412 пользователей)
Ответ: Несколько меню в игре

Сообщение от ABTOMAT Посмотреть сообщение
Ну, тут вопрос в удобстве показывания/скрытия.



А вот это уже ценное замечание! И сильно? Тогда, наверное, действительно нафиг.
Солидно, правда помимо переделывания канвасов в панели я еще отключал Raycast Target у всех элементов которым он не требовался, поэтому наверняка сказать,что из этого помогло я не могу.

Это могут быть и пустые го, но я делаю панелями,сразу выставляю ей стретч на весь экран,при необходимости оставляю/скрываю бэкграундовский image, дальше чаилды расставляю уже относительно этой панели.
Единственный минус перед канвасами для меня: Нет аналога Canvas.enabled=false/true, только отрубать го. Если эти панели нужно будет найти через gameobject.Find() то любой не активный го он не найдет. Поэтому их нужно будет или задать руками в нужных скриптах, или находить в awake(),а потом уже отрубать.
UP: чуть не забыл, если го сделать не активным то у него отключаются все скрипты,рендеры и.т.д => Относительно UI - если на панельке висит Аниматор, то при отключении он перейдет в статус Not Initialized,при включении насколько я понимаю он инициируется по новой, хз насколько это затратно в плане ресурсов,но пока проблем не встречал.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (29.01.2016)
Старый 30.01.2016, 08:50   #5
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Несколько меню в игре

Я делал (и многие на тытубе так же) путем создания пустых объектов в канвасе и расстановки в них элементов для каждого окна (меню, настройки, etc). Это несколько не удобно, но за то всего один канвас. А дальше просто включай/выключай нужные/не нужные окна.
Не удобно потому что сразу все включенные окна создают кашу в редакторе, но если принудительно рукой выключить, то будет не возможно через код найти их. Нужно будет опять же принудительно в редакторе указывать ссылки.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (30.01.2016)
Старый 30.01.2016, 15:01   #6
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Несколько меню в игре

Дофига всяких меню/пагелей/кнопок. Для всего 1 канвас. Ui с аниматором, но отключение к плохому не приводит.
Raycast Target отключать желательно везде, что используется тупо как фон и не кликабельно, но если через EventController будешь получать элемеет, который под мышкой - он его не найдет, так как не рейкастит.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:04.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com