Оглавление
Эта библиотека предоставляет классы и интерфейсы для удобной и эффективной загрузки различных типов ассетов в Unity проектах.
Она содержит общие методы и функциональность для работы с ассетами, а также реализации специфичных стратегий загрузки для различных источников.
- Стандартизация: Единое API для загрузки ассетов из различных источников.
- Отмена загрузки: Возможность отмены операции загрузки в любой момент.
- Отслеживание прогресса: Предоставление информации о текущем состоянии загрузки.
- Расширяемость: Гибкая архитектура для расширения функциональности по вашим потребностям.
- Легковесность: Пакет содержит всего лишь десятки килобайт необходимых скриптов и ничего лишнего.
Эти особенности делают библиотеку еще более мощной и удобной для ваших задач.
Возможность | Runtime | Редакторе |
---|---|---|
Загрузка ассетов из UnityEngine.Resources | ✅ | ✅ |
Загрузка UnityEngine.AssetBundle | ✅ | ✅ |
Загрузка ассетов из UnityEngine.AssetBundle | ✅ | ✅ |
Загрузка ассетов из UnityEditor.PlayerSettings | ❌ | ✅ |
Загрузка ассетов из UnityEngine.AssetDatabase | ❌ | ✅ |
- Откройте окно Unity Package Manager.
- Нажмите на кнопку + в правом верхнем углу окна.
- Выберите Add package from git URL....
- Введите ссылку на репозиторий
- Нажмите Add.
Добавьте в Packages/manifest.json
в раздел dependencies
следующую строку:
"com.depra.assets.unity": "https://github.com/Depra-Inc/Assets.Unity.git"
- Откройте Unity Asset Store.
- Добавьте пакет в ваши активы.
- Нажмите Open in Unity.
- Следуйте инструкциям в редакторе Unity.
Ключевые концепции, используемые в этой библиотеке, описаны в следующих интерфейсах:
-
IAssetUri
: Разработан для облегчения управления ресурсами в проектах Unity. Он предоставляет простой и унифицированный способ идентификации и управления ассетами с использованием URI (Uniform Resource Identifier). -
IAssetFile<TAsset>
: Определяет основные методы и свойства, необходимые для загрузки и выгрузки ассетов. Он расширяет функциональность интерфейсаIAssetFile
, представленного в Depra.Assets, и предоставляет возможность выполнения как синхронной, так и асинхронной загрузки ассетов, а также проверки состояния загрузки.
Вы можете создать свои реализации этих интерфейсов или использовать уже готовые, представленные в таблице:
Тип класса ассета | Идентификатор | Назначение |
---|---|---|
ResourcesAsset<TAsset> |
ResourcesPath |
Загрузка и выгрузка ассетов из UnityEngine.Resources . |
AssetBundleFile |
AssetBundleUri |
Загрузка и выгрузка UnityEngine.AssetBundle . |
AssetBundleAssetFile<TAsset> |
AssetName |
Загрузка и выгрузка ассетов из UnityEngine.AssetBundle . |
EditorDatabaseAsset<TAsset> |
DatabaseAssetUri |
Загрузка и выгрузка ассетов из UnityEditor.AssetDatabase . |
PreloadedAsset<TAsset> |
IAssetUri |
Загрузка и выгрузка ассетов из настроек проекта UnityEditor.ProjectSettings . |
Все классы, реализующие интерфейс IAssetFile<TAsset>
, также реализуют интерфейс System.IDisposable
.
Добавлено для удобного использования в using
блоках.
var resourceTexture = new ResourceAsset<Texture2D>("Textures/myTexture");
Texture2D loadedTexture = resourceTexture.Load();
// Использование загруженного ассета.
resourceTexture.Unload();
var assetBundleSource = new AssetBundleFromFile();
var assetBundleFile = new AssetBundleFile("Path/To/MyBundle", assetBundleSource);
AssetBundle loadedBundle = assetBundleFile.Load();
// Использование загруженного ассета.
assetBundleFile.Unload();
var assetBundle = AssetBundle.LoadFromFile("Path/To/MyBundle");
var assetBundleAsset = new AssetBundleAssetFile<GameObject>("MyAsset", assetBundle);
GameObject loadedAsset = assetBundleAsset.Load();
// Использование загруженного ассета.
assetBundleAsset.Unload();
var databaseAsset = new EditorDatabaseAsset<MyScriptableObject>("Path/To/MyAsset");
MyScriptableObject loadedObject = databaseAsset.Load();
// Использование загруженного ассета.
databaseAsset.Unload();
var anyAsset = new ResourcesAsset<GameObject>("Path/To/MyAsset");
var preloadedAsset = new PreloadedAsset<GameObject>(anyAsset);
GameObject loadedAsset = preloadedAsset.Load();
// Использование загруженного ассета.
preloadedAsset.Unload();
- Depra.Assets - базовая библиотека для работы с ассетами ( поставляется вместе с этим UPM пакетом).
Я рад приветствовать запросы на добавление новых функций и сообщения об ошибках в разделе issues и также принимать pull requests.
Я независимый разработчик, и большая часть разработки этого проекта выполняется в свободное время. Если вы заинтересованы в сотрудничестве или найме меня для проекта, ознакомьтесь с моим портфолио и свяжитесь со мной!
Этот проект распространяется под лицензией Apache-2.0
Copyright (c) 2023 Николай Мельников n.melnikov@depra.org