Как правильно использовать Canvas в unity?
Вопросы про то, как правильно выстраивать архитектуру проекта, работая с Canvas.
Нужно ли создавать много канвасов на сцене под каждую задачу или лучше запихать всё в один и просто делать активными/неактивными нужные элементы в данный момент ?
Какой выбирать Render mode ? Я использую для всех нужд "Screnn Space - Overlay": Отображение окон диалогов с персонажами; окно с паузой, где можно сохраниться и тд. Или лучше делать по другому ? в каких ситуациях использовать другие режимы ?
Как сделать некоторые канвасы не видимыми на сцене редактирования, но активными при запуске проекта ? Просто элементы разных канвасов накалдываются друг на друга и мешают работать. Приходится делать все канвасы неактивными, кроме одного, и снова включать при запуске проекта. Это не удобно.
Если есть хорошие статьи как правильно выстраивать архитектуру проекта, то дайте ссылки.
Ответы (2 шт):
Изменение любого элемента какнваса приводит к перерисовке всего канваса, а значит и всех его элементов. Это лишняя работа, поэтому лучше делать много канвасов под каждую задачу, тогда не будет лишних перерисовок на каждый чих.
Зависит оттого, какого эффекта нужно добиться. Для каждой задачи свой режим отрисовки.
Если память меня не подводит, у объекта, на котором висит канвас есть компонент CanvasRenderer, его можно отключать чтобы скрыть канвас. Соответственно по умолчанию можно отключить отрисовку всех канвасов, кроме нужного, например, главного меню.
У канваса и скейлера есть настройки, если они не меняются, то нет смысла создавать множество, никакого! В идеале менюшки не прячут, а спавнят.
Для обычного не диегетического интерфейса используют Screnn Space - Overlay
. Для всего остального есть World Space
, например циферки или прогресс бар на поверхность прилепить.
В правом-верхнем углу есть настройка отображения слоёв в окне Scene
, как раз на такие случаи, когда одни слои мешают редактированию других, отключить слой UI
.