Войти
ПрограммированиеФорумОбщее

Переключение UI-экранов в Unity

#0
15:44, 24 фев. 2018

Доброго времени суток всем! Кто работал с UI в Unity - хочу поинтересоваться - как переключаете экраны/панели/элементы интерфейса?
Выключаете их, используете CanvasGroup, или какие-то дополнительные решения/плагины?

За последние годы пришел к решению использовать CanvasGroup, сейчас у меня обычно 3-15 full-screen CanvasGroup и управляющий скрипт переключает их по альфе и interactable в зависимости от того, что должно быть активно в данный момент. Работает быстро, позволяет делать полупрозрачные панели, если нужно, на производительность не жалуюсь. Из минусов - разве что то, что все панели включены одновременно.

У варианта с переключение GameObject-ов тот плюс, что ненужное выключено, но при мало-мальски сложном UI заметны подвисания при включении экрана.

Кто что использует?


#1
19:26, 24 фев. 2018

Я использую отключение GameObject-ов и подвисания не замечал. Причём, если программа такова, что нажатие кнопки ведёт на конкретный объект (панель) то для этого скрипт не использую совсем. У UI Button есть прекрасная функция OnClick, где можно выставлять какой объект выключить, а какой включить при его нажатии. А вот interactable  уже через скрипт.

#2
20:09, 24 фев. 2018

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

#3
22:03, 13 мар. 2018

Смотря что за версия. В unity 5 выключаю Canvas, работает быстрее чем выключение\включение GameObject, а при выключенном Canvas дочерние UI элементы перестают пересчитываться. В unity 2017 лучше вырубать GameObject, т.к. включен Canvas или нет, дочерние элементы продолжают считать себе размер и позицию. В итоге при большом количестве разных окошек, игра потребляет больше ресурсов.

#4
(Правка: 9:05) 9:04, 14 мар. 2018

AlexdeBur
> но при мало-мальски сложном UI
Сложный это сколько объектов, например?

Что-то я сомневаюсь что даже если счет идет на тысячи - при простом включении/выключении что-то будет подвисать.

ПрограммированиеФорумОбщее