{"id":32629779,"url":"https://github.com/depra-inc/assets.unity","last_synced_at":"2025-10-30T22:46:27.635Z","repository":{"id":161151435,"uuid":"497094789","full_name":"Depra-Inc/Assets.Unity","owner":"Depra-Inc","description":"Provides an API for loading Unity asset files 🗃️ in multiple ways through a single interface.","archived":false,"fork":false,"pushed_at":"2025-01-12T12:58:33.000Z","size":533,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-12T13:42:46.307Z","etag":null,"topics":["assets","files","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Depra-Inc.png","metadata":{"files":{"readme":"Docs/README.RU.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-27T18:11:58.000Z","updated_at":"2025-01-12T12:58:36.000Z","dependencies_parsed_at":"2024-06-09T14:50:34.124Z","dependency_job_id":"573b8e87-7526-4664-b4dd-41553a879d45","html_url":"https://github.com/Depra-Inc/Assets.Unity","commit_stats":null,"previous_names":["depression-aggression/assets.unity","depra-inc/asset.unity"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Depra-Inc/Assets.Unity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depra-Inc%2FAssets.Unity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depra-Inc%2FAssets.Unity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depra-Inc%2FAssets.Unity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depra-Inc%2FAssets.Unity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Depra-Inc","download_url":"https://codeload.github.com/Depra-Inc/Assets.Unity/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Depra-Inc%2FAssets.Unity/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281896639,"owners_count":26580138,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-30T02:00:06.501Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assets","files","unity"],"created_at":"2025-10-30T22:46:19.151Z","updated_at":"2025-10-30T22:46:27.627Z","avatar_url":"https://github.com/Depra-Inc.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Depra.Assets\n\n![License](https://img.shields.io/github/license/Depra-Inc/Assets.Unity?style=flat-round)\n![Last Commit](https://img.shields.io/github/last-commit/Depra-Inc/Assets.Unity?style=flat-round)\n![Code Size](https://img.shields.io/github/languages/code-size/Depra-Inc/Assets.Unity?style=flat-round)\n\n\u003cdiv\u003e\n    \u003cstrong\u003e\u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"README.RU.md\"\u003eРусский\u003c/a\u003e\u003c/strong\u003e\n\u003c/div\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eОглавление\u003c/summary\u003e\n\n- [Введение](#-введение)\n    - [Особенности](#-особенности)\n    - [Возможности](#-возможности)\n- [Установка](#-установка)\n- [Содержание](#-содержание)\n- [Примеры использования](#-примеры-использования)\n    - [Загрузка ассета из ресурсов](#загрузка-ассета-из-ресурсов)\n    - [Загрузка AssetBundle](#загрузка-assetbundle)\n    - [Загрузка ассета из AssetBundle](#загрузка-ассета-из-assetbundle)\n    - [Загрузка ассета из редакторской базы данных](#загрузка-ассета-из-редакторской-базы-данных)\n    - [Загрузка ассета из настроек проекта](#загрузка-ассета-из-настроек-проекта)\n- [Зависимости](#-зависимости)\n- [Сотрудничество](#-сотрудничество)\n- [Поддержка](#-поддержка)\n- [Лицензия](#-лицензия)\n\n\u003c/details\u003e\n\n## 🧾 Введение\n\nЭта библиотека предоставляет классы и интерфейсы для удобной и эффективной загрузки различных типов ассетов в **Unity**\nпроектах.\n\nОна содержит общие методы и функциональность для работы с ассетами, а также реализации специфичных стратегий\nзагрузки для различных источников.\n\n### 💡 Особенности:\n\n- **Стандартизация**: Единое **API** для загрузки ассетов из различных источников.\n- **Отмена загрузки**: Возможность отмены операции загрузки в любой момент.\n- **Отслеживание прогресса**: Предоставление информации о текущем состоянии загрузки.\n- **Расширяемость**: Гибкая архитектура для расширения функциональности по вашим потребностям.\n- **Легковесность**: Пакет содержит всего лишь десятки килобайт необходимых скриптов и ничего лишнего.\n\nЭти особенности делают библиотеку еще более мощной и удобной для ваших задач.\n\n### 🦾 Возможности:\n\n| Возможность                                        | Runtime | Редакторе |\n|----------------------------------------------------|---------|-----------|\n| Загрузка ассетов из **UnityEngine.Resources**      | ✅       | ✅         |\n| Загрузка **UnityEngine.AssetBundle**               | ✅       | ✅         |\n| Загрузка ассетов из **UnityEngine.AssetBundle**    | ✅       | ✅         |\n| Загрузка ассетов из **UnityEditor.PlayerSettings** | ❌       | ✅         |\n| Загрузка ассетов из **UnityEngine.AssetDatabase**  | ❌       | ✅         |\n\n## 📥 Установка\n\n### 📦 Через **UPM**:\n\n1. Откройте окно **Unity Package Manager**.\n2. Нажмите на кнопку **+** в правом верхнем углу окна.\n3. Выберите **Add package from git URL...**.\n4. Введите [ссылку на репозиторий](https://github.com/Depra-Inc/Assets.Unity.git)\n5. Нажмите **Add**.\n\n### ⚙️ Через **UPM** используя `manifest.json`:\n\nДобавьте в `Packages/manifest.json` в раздел `dependencies` следующую строку:\n\n```\n\"com.depra.assets.unity\": \"https://github.com/Depra-Inc/Assets.Unity.git\"\n```\n\n### 🛒 Через Unity Asset Store:\n\n1. Откройте [Unity Asset Store](https://assetstore.unity.com/packages/tools/utilities/depra-assets-266429).\n2. Добавьте пакет в ваши активы.\n3. Нажмите **Open in Unity**.\n4. Следуйте инструкциям в редакторе **Unity**.\n\n## 📖 Содержание\n\n**Ключевые концепции**, используемые в этой библиотеке, описаны в следующих интерфейсах:\n\n- `IAssetUri`: Разработан для облегчения управления ресурсами в проектах **Unity**.\n  Он предоставляет простой и унифицированный способ идентификации и управления ассетами с использованием **URI**\n  *(Uniform Resource Identifier)*.\n\n- `IAssetFile\u003cTAsset\u003e`: Определяет основные методы и свойства, необходимые для загрузки и выгрузки ассетов.\n  Он расширяет функциональность интерфейса `IAssetFile`, представленного\n  в [Depra.Assets](https://github.com/Depra-Inc/Assets), и предоставляет возможность выполнения как синхронной, так и\n  асинхронной загрузки ассетов, а также проверки состояния загрузки.\n\nВы можете создать свои реализации этих интерфейсов или использовать уже готовые, представленные в таблице:\n\n| Тип класса ассета              | Идентификатор      | Назначение                                                                                                     |\n|--------------------------------|--------------------|----------------------------------------------------------------------------------------------------------------|\n| `ResourcesAsset\u003cTAsset\u003e`       | `ResourcesPath`    | Загрузка и выгрузка ассетов из `UnityEngine.Resources`.                                                        |\n| `AssetBundleFile`              | `AssetBundleUri`   | Загрузка и выгрузка `UnityEngine.AssetBundle`.                                                                 |\n| `AssetBundleAssetFile\u003cTAsset\u003e` | `AssetName`        | Загрузка и выгрузка ассетов из `UnityEngine.AssetBundle`.                                                      |\n| `EditorDatabaseAsset\u003cTAsset\u003e`  | `DatabaseAssetUri` | Загрузка и выгрузка ассетов из `UnityEditor.AssetDatabase`. ⚠️**Асинхронная загрузка пока не поддерживается.** |\n| `PreloadedAsset\u003cTAsset\u003e`       | `IAssetUri`        | Загрузка и выгрузка ассетов из настроек проекта `UnityEditor.ProjectSettings`.                                 |\n\nВсе классы, реализующие интерфейс `IAssetFile\u003cTAsset\u003e`, также реализуют интерфейс `System.IDisposable`.\nДобавлено для удобного использования в `using` блоках.\n\n## 📋 Примеры использования\n\n#### Загрузка ассета из ресурсов\n\n```csharp\nvar resourceTexture = new ResourceAsset\u003cTexture2D\u003e(\"Textures/myTexture\");\nTexture2D loadedTexture = resourceTexture.Load();\n// Использование загруженного ассета.\nresourceTexture.Unload();\n```\n\n#### Загрузка AssetBundle\n\n```csharp\nvar assetBundleSource = new AssetBundleFromFile();\nvar assetBundleFile = new AssetBundleFile(\"Path/To/MyBundle\", assetBundleSource);\nAssetBundle loadedBundle = assetBundleFile.Load();\n// Использование загруженного ассета.\nassetBundleFile.Unload();\n```\n\n#### Загрузка ассета из AssetBundle\n\n```csharp\nvar assetBundle = AssetBundle.LoadFromFile(\"Path/To/MyBundle\");\nvar assetBundleAsset = new AssetBundleAssetFile\u003cGameObject\u003e(\"MyAsset\", assetBundle);\nGameObject loadedAsset = assetBundleAsset.Load();\n// Использование загруженного ассета.\nassetBundleAsset.Unload();\n```\n\n#### Загрузка ассета из редакторской базы данных\n\n```csharp\nvar databaseAsset = new EditorDatabaseAsset\u003cMyScriptableObject\u003e(\"Path/To/MyAsset\");\nMyScriptableObject loadedObject = databaseAsset.Load();\n// Использование загруженного ассета.\ndatabaseAsset.Unload();\n```\n\n#### Загрузка ассета из настроек проекта\n\n```csharp\nvar anyAsset = new ResourcesAsset\u003cGameObject\u003e(\"Path/To/MyAsset\");\nvar preloadedAsset = new PreloadedAsset\u003cGameObject\u003e(anyAsset);\nGameObject loadedAsset = preloadedAsset.Load();\n// Использование загруженного ассета.\npreloadedAsset.Unload();\n```\n\n## 🖇️ Зависимости\n\n- [Depra.Assets](https://github.com/Depra-Inc/Assets) - базовая библиотека для работы с ассетами (\n  поставляется вместе с этим **UPM** пакетом).\n\n## 🤝 Сотрудничество\n\nЯ рад приветствовать запросы на добавление новых функций и сообщения об ошибках в\nразделе [issues](https://github.com/Depra-Inc/Assets.Unity/issues) и также\nпринимать [pull requests](https://github.com/Depra-Inc/Assets.Unity/pulls).\n\n## 🫂 Поддержка\n\nЯ независимый разработчик, и большая часть разработки этого проекта выполняется в свободное время.\nЕсли вы заинтересованы в сотрудничестве или найме меня для проекта,\nознакомьтесь с моим [портфолио](https://github.com/Depra-Inc)\nи [свяжитесь со мной](mailto:g0dzZz1lla@yandex.ru)!\n\n## 🔐 Лицензия\n\nЭтот проект распространяется под лицензией\n**[Apache-2.0](https://github.com/Depra-Inc/Assets.Unity/blob/main/LICENSE.md)**\n\nCopyright (c) 2023 Николай Мельников\n[n.melnikov@depra.org](mailto:n.melnikov@depra.org)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdepra-inc%2Fassets.unity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdepra-inc%2Fassets.unity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdepra-inc%2Fassets.unity/lists"}