Управление ресурсами — одна из самых важных и сложных задач в Unity-проектах. По мере роста игры увеличивается количество текстур, моделей, звуков и других ассетов. Загружать всё сразу — плохая идея.
Для решения этой проблемы Unity предлагает систему Addressables.
В этой статье разберём, что это такое, как работает и как начать использовать на практике.
Что такое Addressables
Addressables — это система управления ресурсами, которая позволяет загружать ассеты по "адресу" (ключу), а не через прямые ссылки.
Вместо этого:
public GameObject prefab;
Вы используете:
Addressables.LoadAssetAsync<GameObject>("Enemy");
Это даёт больше гибкости и контроля.
Зачем нужны Addressables
Основные проблемы классического подхода:
- Жёсткие зависимости между объектами
- Загрузка всех ресурсов сразу
- Сложность управления памятью
Addressables решают это за счёт:
- ленивой загрузки (on demand)
- освобождения памяти
- удобной организации ассетов
Как работает система
Основные элементы:
- Address — строковый ключ (например "Enemy")
- Asset — сам ресурс (префаб, текстура и т.д.)
- Group — группа ресурсов с настройками сборки
Вы связываете ассет с адресом, а потом загружаете его по этому адресу.
Установка Addressables
- Откройте Package Manager
- Найдите "Addressables"
- Установите пакет
- 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-проектов, особенно на мобильных устройствах и больших играх.
Начните с простых кейсов, постепенно внедряйте систему — и вы получите полный контроль над ресурсами.