Верстка интерфейсов игр в Unity UI (uGUI)

Верстка интерфейсов игр в Unity UI (uGUI) Вы открываете инвентарь на мобильном устройстве, и FPS падает на 15%. Frame Debugger показывает 214 draw calls для одного экрана. Знакомая ситуация? Мы сталкиваемся с этим регулярно и исправляем за неделю. Unity UI (uGUI) — мощная система, но её производи

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

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

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1526
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1030
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    657
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    738
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    142

Верстка интерфейсов игр в Unity UI (uGUI)

Вы открываете инвентарь на мобильном устройстве, и FPS падает на 15%. Frame Debugger показывает 214 draw calls для одного экрана. Знакомая ситуация? Мы сталкиваемся с этим регулярно и исправляем за неделю. Unity UI (uGUI) — мощная система, но её производительность закладывается на этапе архитектуры Canvas, а не в количестве элементов. За 5 лет работы мы оптимизировали UI более чем в 50 проектах — от инди до AAA. Расскажем, как избежать типовых ошибок.

Unity UI Optimization Guide помогает понять базовые принципы: Canvas собирает UI-элементы в batch, если одинаковый материал и одна текстура из Sprite Atlas.

Почему uGUI может тормозить?

Canvas собирает UI-элементы в batch — группу с одним draw call. Условие батчинга: одинаковый материал, одна текстура (Sprite Atlas), без перекрытий с чужеродными элементами. Разрушают батчинг три вещи:

  1. Смешение текстур. Иконка из Атласа A, кнопка из Атласа B, текст через TextMeshPro — каждое переключение текстуры даёт новый draw call. Решение: все визуальные элементы одного экрана в один Sprite Atlas. TextMeshPro-тексты — отдельный batch, но хотя бы один.
  2. Вложенные Mask. Каждый Mask добавляет 2 stencil-прохода и разрывает батч снаружи и внутри. Для статичных элементов с обрезанными углами проще нарисовать текстуру с нужной формой, чем ставить Mask.
  3. Неправильный порядок Sibling Index. Если Image A и B перекрываются и из одного атласа, батч всё равно может разорваться из-за z-порядка. Unity batches работают только если нет перекрытий между элементами из разных атласов.

Диагностика: Frame Debugger → Enable → ищем секцию UI. Хорошая цифра для HUD — 5–15 draw calls. Больше 50 — повод для оптимизации.

Как мы уменьшаем draw calls: кейс из нашей практики

Пришёл проект с жалобой на 15% просадку FPS при открытии инвентаря. Frame Debugger показал 214 draw calls для 48 слотов. Каждый слот — отдельный Prefab с иконкой из PNG (не атлас), TextMeshPro-количеством, фоновой рамкой из другого PNG и Outline-компонентом (генерирует дополнительную mesh).

Решение: упаковали все иконки в два Sprite Atlas (предметы и UI-хром раздельно), заменили TextMeshPro Outline на SDF Outline в материале TMP, добавили Virtual Scroll List (pool-based) для сетки предметов. Итог: 22 draw calls на том же экране. FPS вернулся к норме. Выгода: экономия до 40% времени рендеринга. Гарантируем аналогичный подход для вашего UI.

Что входит в нашу работу по верстке UI

  • Аудит текущего UI: Frame Debugger, Profiler, анализ архитектуры Canvas.
  • Оптимизация атласов: нарезка, объединение, настройка Fallback Fonts.
  • Верстка RectTransform с привязкой якорей для адаптации под разрешения.
  • Настройка Canvas Scaler под целевые платформы.
  • Реализация виртуального скролла для динамических списков (ScrollView с pool).
  • Интеграция анимаций (DoTween, Animator) без потери производительности.
  • Документация по UI-архитектуре и стилю кода.
  • Обучение команды работе с батчингом и профилированием.

RectTransform: правила, которые спасают от боли

Якоря (Anchors) и Pivot — не одно и то же. Якорь определяет точку привязки к родителю, Pivot — точку вращения и масштабирования элемента. Типичная ошибка: якоря выставлены в левый верхний угол, а элемент должен быть по центру. При смене разрешения элемент уезжает. Правильно: якорь → center/middle, anchored position = (0, 0).

Для адаптации используем Canvas Scaler с Scale With Screen Size. Reference Resolution 1920×1080 и Match = 0.5 — рабочая база. Для мобильных с Match = 0.8–1.0 (в пользу Height) UI не расплывается на узких экранах.

ContentSizeFitter + VerticalLayoutGroup — удобно для динамических списков, но каждое изменение вызывает Layout Rebuild. Для ScrollView с сотнями элементов применяем Virtual Scroll List: держим в памяти только видимые — до 10–15 активных объектов вместо сотен.

Как настроить Canvas Scaler для мобильных устройств?

Для мобильных с разными соотношениями сторон Match лучше поднять до 0.8–1.0 в пользу Height. Иначе на iPhone с 19.5:9 UI расплывается по горизонтали. Мы также настраиваем Reference Resolution под целевое разрешение — обычно 750×1334 (iPhone 6/7/8) с режимом Scale With Screen Size. Подробности — на официальной документации Canvas Scaler.

TextMeshPro: шрифты и производительность

TextMeshPro — стандарт для текста. Использует SDF рендеринг, что даёт чёткость на любом масштабе. Для локализации кириллицы или CJK настройте Fallback Font Asset: основной шрифт для латиницы с прописанным Fallback на нужный язык. TextMeshPro автоматически подгружает недостающие глифы, и текст остаётся в 1-2 draw calls.

Atlas Population Mode: Dynamic добавляет глифы по мере встречи — хорошо для dev, плохо для релиза (микрофризы при первом рендере). Для продакшна используем Static с предварительно заполненным атласом через Font Asset Creator.

Процесс верстки

Шаги по оптимизации UI
  1. Анализ Frame Debugger — выявление точек роста.
  2. Упаковка всех текстур экрана в один Sprite Atlas.
  3. Настройка Canvas Scaler под платформу.
  4. Замена TextMeshPro Outline на SDF Outline.
  5. Внедрение виртуального скролла для списков.
  6. Тестирование на нескольких разрешениях и профилирование.

Начинаем с получения Figma-макетов с размерами, отступами и правилами адаптации. Определяем структуру Canvas и атласов. Верстаем базовый layout на RectTransform, подключаем шрифты и текстуры. Настраиваем EventSystem и навигацию для геймпада/клавиатуры. Тестируем на нескольких разрешениях через Game View. Профилируем Frame Debugger.

Сроки Ориентировочные сроки
1–3 простых экрана без анимаций 2–5 дней
Полный UI-комплект инди-проекта (10–15 экранов) 3–6 недель
Сложные экраны с virtual scroll, drag & drop 1–3 недели за систему
Мультиплатформенная адаптация существующего UI 1–4 недели

Стоимость рассчитывается индивидуально после анализа Figma-макетов и технических требований. Свяжитесь с нами для предварительной оценки. Получите консультацию по оптимизации вашего UI.

Стратегия батчинга Draw calls Сложность внедрения
Без оптимизации (разрозненные атласы) 100+ Низкая
Один атлас на экран 15–25 Средняя
Virtual Scroll + один атлас 5–15 Высокая

Опыт показал: правильная архитектура Canvas и атласов окупается на этапе оптимизации. Мы гарантируем результат — снижение draw calls до 5–15 на HUD без потери визуального качества.