Об этом проекте
bevy_asset_loader — это плагин для игрового движка Bevy, который упрощает и организует загрузку игровых ресурсов. Он вводит выводимый трейт `AssetCollection`, позволяющий разработчикам группировать связанные ресурсы в структуры, которые затем становятся доступны как ресурсы Bevy ECS после полной загрузки.
Основная функция плагина — система состояний загрузки. Разработчики могут настроить состояние Bevy, выделенное для загрузки ресурсов, указать, какие коллекции ресурсов загружать, и определить следующее состояние для перехода после завершения загрузки. Состояние загрузки гарантирует, что все дескрипторы ресурсов полностью загружены до начала следующего состояния.
Поддерживаемые типы полей ресурсов включают:
- Отдельные поля `Handle<T>`, загружаемые из пути к файлу (аудио, изображения и т. д.)
- Макеты текстурных атласов с настраиваемым размером плитки, столбцами, строками и отступами
- Изображения с пользовательскими конфигурациями сэмплера (режим фильтрации, режим обёртывания)
- Массивные текстуры с настраиваемым количеством слоёв
- Стандартные материалы (при включённой функции 3d)
- Папки, загружаемые как `Vec<UntypedHandle>` или типизированные векторы
- Списки путей для совместимого с вебом сбора ресурсов
- Коллекции, загружаемые как HashMap с использованием трейта MapKey
Поддерживаются два режима конфигурации ресурсов:
Ресурсы времени компиляции используют атрибуты макроса derive непосредственно в коде. Пути и параметры жёстко закодированы, что требует перекомпиляции при изменениях.
Динамические ресурсы используют атрибут `key` вместо `path`, что позволяет хранить конфигурации в файлах `.assets.ron`. Это отделяет данные ресурсов от кода, снижает частоту перекомпиляции и упрощает управление ресурсами для не-программистов. Функция `standard_dynamic_assets` включает загрузку RON-файлов для динамических ресурсов.
Дополнительные возможности включают:
- Интеграция отслеживания прогресса с крейтом iyes_progress для поддержки индикатора загрузки
- Настройка состояния сбоя для корректной обработки отсутствующих или незагруженных ресурсов
- `finally_init_resource` для инициализации ресурсов FromWorld после загрузки коллекций ресурсов
- Прямая инициализация без состояния загрузки через `init_collection`
- Выгрузка ресурсов путём удаления ресурсов AssetCollection, когда они больше не нужны
Крейт распространяется под двойной лицензией Apache-2.0 и MIT и поддерживает совместимость с несколькими версиями Bevy, имея выделенную ветку, отслеживающую основную ветку разработки Bevy.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.