Unity Addressables
Unity Addressables — это система управления загрузкой и адресацией ресурсов в Unity. Она позволяет эффективно управлять асинхронной загрузкой контента, оптимизировать использование памяти, а также легко обновлять и изменять контент без необходимости перекомпилировать проект. Это мощный инструмент для работы с большими проектами, особенно полезный для игр, работающих с большим количеством ресурсов.
Как работает Addressables
- Метки (Labels):
- Ресурсы можно объединять в группы с помощью меток. Это упрощает управление большим количеством объектов.
- Группы ресурсов (Asset Groups):
- Ресурсы группируются в Asset Groups, которые можно настроить для локального или удаленного хранения.
- Каталог ресурсов (Addressables Catalog):
- Builds и профили:
Основные методы Unity Addressables
Загружает один ресурс по адресу (например, префаб, текстуру, аудио, текстовый файл). Ресурс остается в памяти после загрузки, и его нужно вручную освободить с помощью Addressables.Release()
— Addressables.LoadAssetAsync<T>(string address)
Позволяет создать объект в игре сразу после его загрузки (например, если у вас есть префаб врага, он будет загружен и появится в сцене). Этот метод загружает объект, создает его копию в сцене и автоматически управляет его памятью (его не нужно освобождать вручную через Addressables.Release()
) — Addressables.InstantiateAsync(string address, Vector3 position, Quaternion rotation)
Удаляет загруженный объект из памяти, когда он больше не нужен. Это важно для оптимизации работы игры, особенно на мобильных устройствах. Если объект был создан через InstantiateAsync()
, Release()
применять не нужно — Addressables управляет этим автоматически — Addressables.Release<T>(T obj)
Позволяет загрузить несколько ресурсов одновременно, передав список ключей. Например, можно загрузить сразу несколько врагов или текстур — Addressables.LoadAssetsAsync<T>(IEnumerable<string> keys, Action<T> callback)
Позволяет получить список доступных ресурсов по ключу без их загрузки. Это полезно, если вам нужно просто проверить, какие ресурсы существуют — Addressables.LoadResourceLocationsAsync(IEnumerable<string> keys, Type type)
Определяет размер загружаемого ресурса (например, если ресурс загружается с сервера). Работает только для ресурсов, которые хранятся удаленно (например, на сервере) — Addressables.GetDownloadSizeAsync(string key)
Загружает все связанные файлы для указанного ресурса (например, если у префаба есть текстуры и анимации, они тоже загрузятся). — Addressables.DownloadDependenciesAsync(string key)
Удаляет загруженные ресурсы из кэша (чтобы они загрузились заново при следующем вызове) — Addressables.ClearDependencyCacheAsync(string key)
Проверяет, есть ли обновления для загружаемых ресурсов (например, если контент обновился на сервере) — Addressables.CheckForCatalogUpdates()
Обновляет указанные каталоги ресурсов, если в них есть изменения — Addressables.UpdateCatalogs(IEnumerable<string> catalogs)