Оптимизация изображений для UI в Unity

Текстурная память — один из главных источников проблем с производительностью в мобильных Unity-проектах. Базовые принципы, которые стоит знать до того, как начнёт лагать.

Форматы изображений

PNG — для элементов с прозрачностью (кнопки, иконки). Без потерь качества, но занимает много места.

JPEG — для фонов без прозрачности. Сильное сжатие, но нет прозрачности и возможны артефакты.

ASTC — основной формат для мобильных (Android и iOS). Хороший баланс качества и размера, но не поддерживается на всех системах.

Оптимальные размеры

  • Размер текстуры должен соответствовать отображаемым пикселям: элемент 100×50px → текстура 128×64px
  • Размеры кратны 4 (оптимально — степени двойки: 32, 64, 128…)
  • Адаптивные элементы: от 128×128 до 2048×2048

Настройки сжатия

Мобильные:

  • Android: ETC2 (совместимость) или ASTC (рекомендуется)
  • iOS: ASTC (обязательно для Metal)

Десктоп:

  • Windows/Linux: DXT5 (с прозрачностью)
  • Максимальное качество: BC7 (требует DirectX 11)

Чек-лист

  • Объединяйте мелкие текстуры в атласы
  • Отключайте Read/Write Enabled — если не меняете текстуры в коде
  • Отключайте Mip Maps — для UI-элементов фиксированного размера
  • Тестируйте на реальных устройствах
  • Проверяйте в Unity Profiler и Frame Debugger

Полезные инструменты

  • TinyPNG/TinyJPG — онлайн-сжатие
  • Textures Hunter — поиск проблемных текстур в проекте
  • IMG2ETC2 — автоматическая подгонка размера под ETC2

Источники: Unity Documentation (Texture formats, Recommended compression formats), Unity Blog (Optimize your mobile game performance), Android Documentation (Target texture compression formats)