Crate bevy_asset_loader[−][src]
Expand description
The goal of this crate is to offer an easy way for bevy games to load all their assets in a loading State.
bevy_asset_loader
introduces the derivable trait AssetCollection. Structs with asset handles
can be automatically loaded during a configurable loading [State]. Afterwards they will be inserted as
resources containing loaded handles and the plugin will switch to a second configurable [State].
ⓘ
fn main() { let mut app = App::build(); AssetLoader::new(GameState::Loading, GameState::Next) .with_collection::<AudioAssets>() .with_collection::<TextureAssets>() .build(&mut app); app .add_state(GameState::Loading) //.add_plugins(DefaultPlugins) .add_system_set(SystemSet::on_update(GameState::Next) .with_system(use_asset_handles.system()) ) .run(); } #[derive(AssetCollection)] struct AudioAssets { #[asset(path = "audio/background.ogg")] background: Handle<AudioSource>, #[asset(path = "audio/plop.ogg")] plop: Handle<AudioSource> } #[derive(AssetCollection)] pub struct TextureAssets { #[asset(path = "textures/player.png")] pub player: Handle<Texture>, #[asset(path = "textures/tree.png")] pub tree: Handle<Texture>, } // since this function runs in [MyState::Next], we know our assets are // loaded and [MyAudioAssets] is a resource fn use_asset_handles(audio_assets: Res<AudioAssets>, audio: Res<Audio>) { audio.play(audio_assets.background.clone()); } #[derive(Clone, Eq, PartialEq, Debug, Hash)] enum GameState { Loading, Next }
Structs
AssetLoader | A Bevy plugin to configure automatic asset loading |
Traits
AssetCollection | Trait to mark a struct as a collection of assets |
Derive Macros
AssetCollection | Derive macro for AssetCollection |