← К блогу

Иерархия информации мобильного HUD: что показывать в бою, лобби и модальных окнах

Видимость и приоритет HUD по игровым состояниям; связь с Safe Area, слоями всплывающего текста и модальными окнами — таблицы и приёмка на устройствах.

Опубликовано
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • hud
  • mobile
  • unity
  • godot
  • cocos
  • vberai
  • 2026
Иерархия информации мобильного HUD: что показывать в бою, лобби и модальных окнах

Сбои HUD — это редко «мы забыли полоску здоровья»; обычно это слишком много элементов одного приоритета на одном экране: вкладки лобби во время боя, кликабельный магазин поверх катсцены или нижележащий HUD, который всё ещё перехватывает тапы при открытом модальном окне. Дизайн-макеты часто однокадровые и никогда не помечают «скрыть валюту в бою» — нужна спецификация состояние × слой, чтобы инженеры могли реализовать видимость, блокировку ввода и порядок отрисовки.

Ниже в основном используется терминология Unity UGUI (Prefab, Canvas.sortingOrder, raycasts Graphic). Godot: CanvasLayer layer + Control mouse_filter; Cocos: порядок отрисовки узлов + BlockInputEvents / полноэкранные блокировщики — те же критерии и таблицы. Детали Safe Area, всплывающего текста и порядка Canvas: Safe Area, всплывающие числа урона. Устройства, все локали и Release-сборки: чек-лист перед релизом пункты 1, 2 и 5.

Критерии провала (любой один = не пройдено): во время модальных окон / катсцен / платёжных потоков нижележащий HUD всё ещё интерактивен (если спецификация не говорит «половина экрана остаётся рабочей»); в бою небоевой промо-элемент, который нельзя закрыть, блокирует игровую область; одна и та же информация показана дважды (например, монеты в верхней панели плюс крупный боевой UI валюты) без продуктовой пометки; элементы управления из предыдущего состояния остаются (видимы или всё ещё блокируют raycast); в мультиязычных стресс-локалях минимальный боевой макет всё равно обрезает длинный текст (DE/ES и т. д.).


Сначала определите состояния, затем элементы управления

Игровое состояние (примеры)Цель HUDОбычно показыватьОбычно скрывать / понижать
Лобби / главный экранНавигация + ресурсы + событияВалюта сверху, вкладки снизу, вход в событияБоевые навыки, прицел
Бой / внутри уровняДействия + информация о выживанииЗдоровье, навыки, паузаВкладки лобби, полноэкранные баннеры событий
Катсцена / CGНет ввода или только пропускКнопка пропускаПочти весь HUD (или только пропуск)
Модальное окно (магазин, настройки)Фокус на диалогеЭлементы внутри окнаНижележащий HUD без raycasts или весь слой скрыт
Платёж / комплаенсЗавершить потокУсловия, подтверждениеИгровые промо-оверлеи

Согласуйте перечисление состояний с дизайном + инженерией (например, GameUIState.Lobby | Combat | Cinematic | Modal). Корни UI подписываются на машину состояний (группы Prefab в Unity / ветки сцен в Godot / префабы в Cocos) — избегайте разбросанных SetActive / visible в скриптах каждой кнопки.

Лобби против боя: вкладки и вход в события должны скрываться в бою


Слои и порядок сортировки (спецификация, не зависящая от движка)

Документируйте снизу вверх (большее число = впереди):

СлойСодержимоеВвод
L0Полноэкранный фон / фоновый UI сценыНет
L1Боевой HUD (здоровье, плейсхолдер джойстика)Да
L2Боевой всплывающий текст / подсказкиБез raycasts (всплывающие числа урона)
L3Системный тост / бегущая строкаОбычно нет
L4Модальное окно / полноэкранный диалогДа; блокирует тапы L1–L3
L5Обрыв сети, принудительное обновлениеДа; блокирует всё

Unity: sortingOrder / несколько Canvas; Godot: CanvasLayer layer; Cocos: порядок соседних узлов под одним Canvas или слоистый Canvas + маска. Когда открывается модальное окно, поднимите L4 и отключите raycasts L1 / mouse_filter / BlockInput — а не просто «нарисовано сверху, но тапы проходят насквозь».

Стек L0–L5: всплывающий текст неинтерактивен, модальное окно блокирует боевой HUD


Приоритет информации (пример боя)

Если в бою на маленьких экранах можно оставить только N читаемых блоков, лимиты по умолчанию:

ПриоритетБлокСтратегия понижения
P0Здоровье / условие пораженияНе скрывать
P0Пауза / выход из бояНе скрывать
P1Навыки / основные действияОбъединить в меньшее число кнопок
P2Короткий текст целиИконка + подробности по долгому нажатию
P3Валюта, вход в событияСкрыто в бою по умолчанию или в меню паузы
P3Вход в чатСвернуть до иконки

Понижения должны оставаться читаемыми в мультиязычных стресс-локалях (DE/ES и т. д.) — не только тесты сжатия на английском.

Бой P0–P3: скрыть валюту/события по умолчанию, оставить здоровье и паузу


Приёмка (5 шагов)

  1. Перечислите состояния — Из основного потока перечислите переходы (вход на уровень, открытие магазина, CG, переподключение).
  2. Скриншот для каждого состояния — Editor Play и Release на устройстве (пункты 1 и 5 перед релизом); проверьте, что узлы с SetActive(false) / visible=false всё ещё блокируют ввод.
  3. Точечная проверка модальных окон — При открытых магазине / настройках / платеже тапы по бывшим кнопкам HUD не должны ничего делать (полноэкранный прозрачный raycast или маска BlockInput).

Модальное окно открыто: неправильно (тап проходит через боевую кнопку) против правильно (нижележащее заблокировано)

  1. Пересечение с Safe Area — Боевые элементы P0 внутри безопасного отступа (Safe Area).
  2. Фиксируйте версионированные ассеты — Таблица состояний управляет видимостью (Unity ScriptableObject / Godot Resource / конфиг Cocos) — а не временные скрытия только в сцене.

Что должен добавить дизайн

АртефактНазначение
Вайрфреймы по состояниям (минимум Лобби / Бой / Модальное окно)Инженерия настраивает видимость
Список «можно скрыть» для боя на макетеИзбежать отрисовки всех элементов в одном кадре
Спецификация модального окна: затемнённый фон, разрешён ли tap-through?Задаёт политику raycast
Z-порядок слоя промо / событийСогласовать с L4/L5

Дизайнерам не нужно писать машину состояний — таблицы + аннотации уменьшают догадки.


Маршрутизация исправлений

СимптомВероятная причинаДействиеОтветственный
После диалога всё ещё можно тапать бойНижележащие raycasts включеныОтключить raycast Graphic на слое модального окна / полноэкранная маскаИнженерия
Полноэкранное событие в боюНет таблицы состоянийСкрыть P3 в бою; согласование с дизайномИнженерия + дизайн
HUD остался после катсценыНет хука состояния CinematicМашина состояний единообразно скрывает HUDИнженерия
Два отображения валютыПанель лобби не выключена в боюСкрыть верхнюю панель в Combat или объединить источник данныхИнженерия + дизайн
Длинная локаль обрезается в минимальном боевом макетеDE/ES не протестированыПуть переполнения локалиДизайн + инженерия

FAQ

Два Canvas для лобби и боя?
Нормально — или один Canvas с группами. Важна видимость по состояниям + raycasts, а не количество Canvas.

Магазин на половину экрана — это модальное окно?
Да. Укажите в спецификации, кликабельно ли нижележащее и ставится ли на паузу боевая логика.

Конфликтует с UX «меньше — значит больше»?
Таблица иерархии — это продуктовое правило, а не эстетика; P3 может снова открываться для событий через флаги машины состояний.

Полоски над головой в мировом пространстве в 3D?
Это боевая информация, управляется вместе с L1; Правила сортировки в мировом пространстве согласуются с всплывающие числа урона и Safe Area.

Другие статьи, которые могут вам понравиться