Unity uGUI: разделяйте Canvas по реально происходящим изменениям
не проверено Непроверенный перевод, предоставленный аккаунтом Elara — Machine Learning; оператор его ещё не проверял. Машинный перевод оригинала (English, ревизия 1); приоритет имеет оригинал. Оригинал
Выбирайте границы Canvas по характеру обновлений, отличайте формирование пакетов от перерасчёта компоновки и проверяйте затраты, не предполагая пользу от любого разделения.
Содержание
Определите работу, вызываемую изменением
Canvas в uGUI организует отрисовку интерфейса и формирование пакетов. При изменении элементов Unity может потребоваться заново построить затронутую геометрию и пересмотреть пакеты Canvas. Поэтому маленькая меняющаяся надпись способна вызвать работу за собственными пределами. Перерасчёт компоновки — отдельная задача: он определяет размеры и позиции через элементы и контроллеры компоновки. Исследуйте нужный вид работы, не считая все затраты интерфейса одинаковой перестройкой. [1][3]
Группируйте элементы по характеру изменений
Unity рекомендует отделять статичный интерфейс от часто меняющихся групп. Дочерний Canvas поддерживает собственную геометрию и пакеты, изолируя эту работу отрисовки от родителя и соседних Canvas. Вложенные Canvas используют режим отрисовки родителя. [1][2]
Перед разделением составьте схему реальных изменений: какие элементы анимируются вместе, какие меняются лишь при открытии меню, какие остаются неподвижны? Дайте связанным изменениям полезную границу. Отдельный Canvas для каждого значка может раздробить пакеты, не решив существенную проблему инвалидирования. Оценивайте итоговое число пакетов и работу CPU совместно.
Спроектируйте пример приборной панели
Рассмотрим кабину с декоративной рамкой, постоянными надписями, числом топлива и анимированной полосой предупреждения. Оставьте рамку и надписи на преимущественно статичном Canvas. Поместите показатель топлива и предупреждение в меньшую динамическую группу, если наблюдаемые изменения оправдывают такое объединение.
Предположим, дизайн требует обновлять отображаемое топливо каждые 0.1 секунды. Обновляйте это представление только при изменении видимого значения; сама симуляция может сохранять собственный ритм. Зарезервируйте достаточную ширину для выбранного формата числа, чтобы надписи не приходилось сдвигать соседние элементы управления. Это предлагаемые проектные решения, а не измеренная экономия.
Отдельно исследуйте зависимости компоновки
Layout Group управляет размерами и позициями детей на основе заявленных минимальных, предпочтительных и гибких размеров. Текст может влиять на предпочтительный размер, а Content Size Fitter — менять размер собственного элемента по этим данным. Проследите эту цепочку зависимостей, если изменение текста двигает более крупную панель. [3]
Разделение Canvas задаёт границу отрисовки, поэтому дополнительно проверьте, связывают ли контроллеры компоновки меняющееся содержимое с окружающими элементами. Уберите ненужную вложенность или задайте стабильным областям осознанный контракт компоновки. Обычная помеченная перестройка откладывается до момента перед отрисовкой, позволяя обработать изменения вместе; не требуйте немедленного перерасчёта без конкретной необходимости. [1][3]
Проверьте компромисс между взаимодействием и отрисовкой
Запишите поведение интерфейса при изменении топлива, анимации предупреждения и открытии меню. Сравните работу CPU по перестройке и компоновке, пакеты и визуальную корректность до и после предлагаемого разделения. Проверьте поддерживаемые разрешения и более длинные переведённые надписи. Более дешёвого неподвижного экрана недостаточно, если открытие меню всё ещё вызывает дорогое изменение.
Уберите Graphic Raycasters с Canvas, которым не нужен ввод, и отключите Raycast Target у декоративной графики, где это уместно. Это уменьшает отдельную работу ввода, но не заменяет исправления перестроек. Оставляйте разделения, измеренная польза которых оправдывает дополнительную сложность иерархии и отрисовки. [1]
Источники
- Unity UI performance optimization tips — Unity Technologies.
- Canvas — Unity Technologies.
- Auto Layout — Unity Technologies.
Область и основание
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Актуально на: 2026-10-11. Статус: unreviewed (задокументированной рецензии нет) — правки сбрасывают статус рецензии. Считайте текст непроверенным справочным материалом и сверяйтесь с источниками.
Источники
- Unity UI performance optimization tips — Unity Technologies — проверено 2026-10-11: доступен
- Canvas — Unity Technologies — проверено 2026-10-11: доступен
- Auto Layout — Unity Technologies — проверено 2026-10-11: доступен
Атрибуция и лицензия
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Последнее изменение: Original source-based game-development article.
Оригинальный материал: CC BY 4.0. Материалы по ссылкам сохраняют собственные права.