03.05.2026

Addressables в Unity: как управлять ресурсами

Гайд по Addressables в Unity: как загружать, управлять и оптимизировать ресурсы.

Addressables в Unity: как управлять ресурсами

Управление ресурсами — одна из самых важных и сложных задач в Unity-проектах. По мере роста игры увеличивается количество текстур, моделей, звуков и других ассетов. Загружать всё сразу — плохая идея.

Для решения этой проблемы Unity предлагает систему Addressables.

В этой статье разберём, что это такое, как работает и как начать использовать на практике.


Что такое Addressables

Addressables — это система управления ресурсами, которая позволяет загружать ассеты по "адресу" (ключу), а не через прямые ссылки.

Вместо этого:

public GameObject prefab;

Вы используете:

Addressables.LoadAssetAsync<GameObject>("Enemy");

Это даёт больше гибкости и контроля.


Зачем нужны Addressables

Основные проблемы классического подхода:

  • Жёсткие зависимости между объектами
  • Загрузка всех ресурсов сразу
  • Сложность управления памятью

Addressables решают это за счёт:

  • ленивой загрузки (on demand)
  • освобождения памяти
  • удобной организации ассетов


Как работает система

Основные элементы:

  • Address — строковый ключ (например "Enemy")
  • Asset — сам ресурс (префаб, текстура и т.д.)
  • Group — группа ресурсов с настройками сборки

Вы связываете ассет с адресом, а потом загружаете его по этому адресу.


Установка Addressables

  1. Откройте Package Manager
  2. Найдите "Addressables"
  3. Установите пакет
  4. Window → Asset Management → Addressables → Groups

После этого можно настраивать ресурсы.


Простой пример загрузки

using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class SpawnEnemy : MonoBehaviour
{
  public string enemyAddress = "Enemy";
  
  void Start()
  {
    Addressables.LoadAssetAsync<GameObject>(enemyAddress).Completed += OnLoaded;
  }
  
  void OnLoaded(AsyncOperationHandle<GameObject> handle)
  {
    if (handle.Status == AsyncOperationStatus.Succeeded)
    {
      Instantiate(handle.Result);
    }
  }
}

Освобождение памяти

Очень важный момент — ресурсы нужно освобождать.

Addressables.Release(handle);

Если этого не делать — будет утечка памяти.


Загрузка сцен

Addressables также поддерживают загрузку сцен:

Addressables.LoadSceneAsync("GameScene");

Это удобно для:

  • уровней
  • DLC
  • динамической подгрузки контента


Преимущества Addressables

  • Гибкое управление ресурсами
  • Экономия памяти
  • Поддержка удалённых ассетов (CDN)
  • Удобная система сборки


Недостатки

  • Более сложная настройка
  • Нужно следить за освобождением памяти
  • Требует понимания асинхронности


Когда использовать Addressables

Подходит, если у вас:

  • Средний или крупный проект
  • Много ассетов
  • Нужна загрузка по требованию


Когда можно не использовать

Можно обойтись без Addressables, если:

  • Маленький проект
  • Все ресурсы загружаются сразу
  • Нет проблем с памятью


Практический вывод

Addressables — мощный инструмент для управления ресурсами.

Он усложняет архитектуру, но даёт:

  • контроль
  • гибкость
  • масштабируемость

Если вы делаете серьёзный проект — стоит освоить эту систему.


Заключение

Addressables — это стандарт для современных Unity-проектов, особенно на мобильных устройствах и больших играх.

Начните с простых кейсов, постепенно внедряйте систему — и вы получите полный контроль над ресурсами.


Смотрите также

Dependency Injection в Unity (Zenject и VContainer)
30.05.2026

Dependency Injection в Unity (Zenject и VContainer)

По мере роста проекта код в Unity начинает усложняться. Скрипты становятся зависимыми друг от друга, появляется множество ссылок через Inspector, а изменения в одной системе неожиданно ломают другую. Именно для решения таких проблем используется Dependency Injection (DI). В этой статье разберём, что такое DI, зачем он нужен в Unity и какой инструмент выбрать: Zenject или VContainer.