Верстка інтерфейсів ігор в 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 років досвіду та 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-проходи та розриває batch ззовні та всередині. Для статичних елементів з обрізаними кутами простіше намалювати текстуру з потрібною формою, ніж ставити Mask.
  3. Неправильний порядок Sibling Index. Якщо Image A і B перекриваються та з одного атласу, batch все одно може розірватися через z-порядок. Unity batches працюють лише якщо немає перекриттів між елементами з різних атласів.

Діагностика: Frame Debugger → Enable → шукаємо секцію UI. Оптимізований UI з одним атласом працює в 3 рази швидше, ніж з розрізненими текстурами. Хороша цифра для 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% часу рендерингу, що дозволяє заощадити до $2000 на місяць на хмарних ресурсах за рахунок зменшення навантаження на GPU. Гарантуємо аналогічний підхід для вашого 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 активних об'єктів замість сотень. Virtual Scroll зменшує споживання пам'яті в 5 разів порівняно зі звичайним ScrollView.

Як налаштувати 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 на предмет overdraw та брейків батчингу.

Сроки Орієнтовні терміни
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 без втрати візуальної якості.