[[Загрузка файлов|Стартовая страница]] `AssetDatabase` доступен только в редакторе Unity и не работает в билдах (экспортированных версиях игр). `AssetDatabase` в Unity – это класс из пространства имён `UnityEditor`, который предоставляет API для работы с ассетами внутри редактора Unity. Он позволяет выполнять такие операции, как загрузка, поиск, создание, удаление и перезагрузка ассетов (ресурсов) прямо в редакторе. ### Особенности - API подходит для автоматизации задач, таких как массовое обновление, модификация и упрощение создания ресурсов. - Если Вы работаете с большим количеством ассетов, правильное использование методов `AssetDatabase` поможет избежать избыточного потребления ресурсов, т.к. методы `LoadAssetAtPath` и `FindAssets` оптимизированы для работы с ассетами напрямую на диске. ### Основные возможности `AssetDatabase` 1. **Загрузка и поиск ассетов:** - `LoadAssetAtPath<T>(string assetPath)`: загружает ассет из указанного пути. - `FindAssets(string filter, string[] searchInFolders = null)`: возвращает массив GUID ассетов, соответствующих фильтру. Используется для поиска ассетов по типу, имени или другим атрибутам. 2. **Создание и управление ассетами:** - `CreateAsset(Object asset, string path)`: создаёт новый ассет на диске и сохраняет его по указанному пути. - `DeleteAsset(string path)`: удаляет ассет по указанному пути. - `ImportAsset(string path)`: импортирует ассет в проект. Полезно, когда ассет изменён на диске, и нужно обновить его внутри редактора. 3. **Работа с путями и GUID:** - `AssetPathToGUID(string path)`: возвращает уникальный GUID ассета по его пути. - `GUIDToAssetPath(string guid)`: преобразует GUID в путь ассета. Это полезно для связи ассетов с их представлением в системе контроля версий или для поиска ассетов без указания пути. 4. **Обновление и рефреш ассетов:** - `Refresh()`: обновляет состояние всех ассетов в редакторе, чтобы отразить изменения, произошедшие вне Unity. - `SaveAssets()`: сохраняет все изменения, сделанные в ассетах. ### Пример использования Допустим, Вам нужно найти все текстуры в папке `Assets/Textures` и загрузить их: ```csharp using UnityEditor; using UnityEngine; public class TextureLoader { public static void LoadAllTextures() { // Ищем все текстуры в папке string[] guids = AssetDatabase.FindAssets("t:Texture", new[] { "Assets/Textures" }); foreach (string guid in guids) { string path = AssetDatabase.GUIDToAssetPath(guid); Texture texture = AssetDatabase.LoadAssetAtPath<Texture>(path); // Делаем что-то с текстурой (например, выводим её имя) Debug.Log("Loaded texture: " + texture.name); } } } ```