← К блогу

Безопасная зона игрового UI и QA на устройствах: порядок отладки и исправления Prefab

Когда в Unity Editor всё выглядит хорошо, но вырез перекрывает HUD или тапы не попадают: классификация сбоев, отладка Canvas Scaler и Screen.safeArea, исправление Prefab.

Опубликовано
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • safe-area
  • unity
  • godot
  • cocos
  • vberai
  • qa
  • 2026
Безопасная зона игрового UI и QA на устройствах: порядок отладки и исправления Prefab

Самая частая жалоба: в Game view всё выглядит нормально, но на высоком телефоне HUD оказывается под вырезом, или кнопки кажутся кликабельными, а попадания не срабатывают. Safe Area — это не «подвинуть Anchor», это политика корневого Canvas, полноэкранный фон против вставленного контента и то, совпадает ли runtime safeArea с каналом.

классы сбоев, порядок отладки Unity UGUI, правила исправления Prefab и оговорки по каналам/мини-играм. Пункт 7 передачи дизайна — метки safe-zone — обобщён в разделе «что должен предоставить дизайн»; пункт 1 перед релизом — охват устройств — расширен здесь, это не повтор чек-листа движка + MCP по Raycast / первому Play.

Godot / Cocos: сопоставьте с DisplayServer.get_display_safe_area() / виджетами SafeArea движка; порядок шагов тот же, что для Unity ниже.

Критерии провала (любой один = не пройдено): основной читаемый UI или обязательные кнопки под системным перекрытием (вырез, индикатор home, скруглённые углы); очевидное смещение визуала относительно попадания; только Editor 16:9 без целевого соотношения на устройстве; поведение Safe Area в Dev и Release различается без спецификации.


Сначала классифицируйте: обрезка, смещение или только фон

СимптомПервый подозреваемыйИнженерное действие
Визуальная обрезка (текст/иконки в вырезе)Контент не вставлен; корень считается полноэкраннымПроверить safeArea против прямоугольников контента
Смещение тапа (выглядит правильно, но не попадает)Режим масштабирования Canvas, несколько Canvas, несовпадение камерыRaycast EventSystem + renderMode Canvas
Фон обрезан, кнопки в порядкеПолноэкранный фон по дизайну, контент вставленНе провал, если спецификация это допускает
Неверно после поворотаНет слушателя изменения ориентации / safeAreaПересчитать вставку при повороте
Только сборка одного каналаSDK меняет safeArea или разрешениеПроверить именно эту сборку; не полагаться только на общий Android

Notch clip vs correct safe inset

Visual button vs hit area offset


Unity UGUI: рекомендуемый порядок отладки (6 шагов)

1. Зафиксируйте воспроизведение

Запишите устройство, ОС, Dev/Release, ориентацию, разрешение Game view. Пункт 5 перед релизом: прогоните основной HUD на Dev и Release.

2. Залогируйте safeArea и reference resolution

После загрузки основного UI залогируйте:

  • Screen.width / Screen.height
  • Screen.safeArea
  • Display.cutouts (Android 11+ если используется)

Чтение: safeArea меньше экрана → требуется вставка контента. В Editor safeArea часто равна полному экрану → это не замена устройству.

3. Корень Canvas и Canvas Scaler

ПроверкаТипичная ошибкаНаправление исправления
Корневой Render ModeСмешение Screen Space / Camera UI → смещение лучаОдин режим для UI
Canvas ScalerReference resolution ≠ базовый портретный ориентир проектаСопоставить с чек-листом движка, пункт 1
Match width/heightДлинное соотношение масштабируется неверно; краевые виджеты уезжаютСогласовать Match с дизайном/продом; исправить Prefab, а не только Scene
Сортировка нескольких CanvasПопадания уходят на неверный слойСогласовать sortingOrder и цели raycast

4. Слои: полноэкранный фон против безопасного контента

Рекомендуемая иерархия Prefab:

Canvas
├── Background_FullBleed   (полный anchor, может заходить в вырез, без ввода)
└── SafeRoot               (компонент Safe Area или padding на основе safeArea)
    ├── HUD_Content
    └── Popups

Background_FullBleed and SafeRoot hierarchy

Используйте Unity Safe Area (или проектный код, задающий offsetMin/Max из Screen.safeArea). Не растягивайте интерактивные кнопки на весь экран без вставки.

Экспорт из студии одним плоским слоем: см. nine-slice / структурированный повторный экспорт и canvas → Prefab.

5. Точечная проверка тапов на устройстве

3–5 критичных кнопок на основном потоке; сравните визуальный центр с пальцем. Смещение только на одном попапе → проверьте вложенный Canvas или двойной Scaler.

6. Зафиксируйте Prefab в репозитории

Критерии прохождения живут в версионированном Prefab, а не в переопределениях тестовой Scene (пункт 6 перед релизом). После изменений Anchor прогоните смоук переполнения локалей на стресс-языках.


Канал / мини-игра (инженерия)

СценарийПримечание
Нативное приложениеScreen.safeArea + реальные устройства
Некоторые мини-игры / быстрые приложенияКонтейнер safeArea / systemInfo ≠ симуляция Editor
Вырезы Androidcutout и safeArea могут различаться
PC / decksafeArea часто полный экран

Паттерн: ISafeAreaProvider (или эквивалент); внедряйте по платформе — избегайте #if в HUD Prefab.


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

СимптомВероятная причинаДействиеВладелец
Обрезка на устройстве, Editor в порядкеНет SafeRoot / нет драйвера safeAreaСлоистый Prefab + Safe Area; перетестировать на устройствеИнженерия
Фон в порядке, кнопки обрезаныКнопки под слоем bleedПереместить в SafeRoot; повторный экспорт слоёв из студииИнженерия + дизайн
Смещение тапаНесколько Canvas / camera UI / вложенный ScalerОбъединить Canvas или унифицировать камеру raycastИнженерия
Дрейф при смене разрешенияТолько фиксированные anchorsИсправить anchors; пункт 6 движкаИнженерия
В дизайне нет safe frameОтсутствует пункт 7 передачиДизайн добавляет референсы выреза/home; повторный экспортДизайн
Плоский экспорт из студииBG + HUD не разделеныРазделение на месте, затем повторный экспортИнженерия + дизайн

Что предоставляет дизайн (вторично)

ПоставкаИнженерное использование
Целевое разрешение + безопасный референс (вырез / home bar)Reference Resolution и ожидания по вставке
Именованные слои full-bleed и HUDPrefab Background_* / SafeRoot
Краевые вкладки внутри safe или намеренный bleedСтратегия Anchor

Дизайнерам не нужно писать скрипты — чёткие метки уменьшают угадывание вставки в px.


Часто задаваемые вопросы

Достаточно ли разрешения iPhone в Game view?
Только смоук в Dev; для релиза нужны целевые устройства (пункт 1 перед релизом). В Editor safeArea часто отличается.

Компонент Safe Area против ручного offset?
Выбор команды; ручной должен обновляться при изменениях safeArea/ориентации — избегайте дублирования логики.

Исправить обрезку только через Canvas Scaler?
Scaler масштабирует; вставка — отдельно. Обрезка — это прямоугольник контента; Scaler — глобальный масштаб.

Могут ли помочь MCP/Cursor?
Хороши для переименований Prefab, подключения Safe Area, смоука Play — числа всё равно из логов устройства. Чек-лист движка + MCP.

Safe Area плюс переполнение локалей?
Сначала исправьте layout SafeRoot, затем стресс-локали — вставка уменьшает ширину.

VberAI Studio против Google AI Studio?
Нет. См. сравнение.

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

Дизайн игрового UI: традиционный процесс против AI-арта + разделение в VberAI Studio

Сравнение ручной нарезки в PS/Figma и VberAI Studio: импорт или AI-генерация UI, авторазделение слоёв, экспорт слоёного PSD или наборов изображений. Эффекты, шаги и демо-видео.

  • game-ui-design
  • game-ui-designer-flow
  • ui-slicing
  • AIGC
Читать

Аудиослои AI Studio: музыка, голос и SFX на одном холсте

Аудио в VberAI Studio: аудиослои и плавающие инструменты, музыка/голос/SFX, библиотека и управление ресурсами, редактирование треков; звук для Spine, покадровой анимации и видео; генерация SFX и голосов персонажей из текста.

  • AI Studio
  • VberAI
  • игровое аудио
  • SFX
Читать