Crate bevy_asset_loader[][src]

Expand description

Bevy asset loader

The goal of this crate is to offer an easy way for bevy games to load all their assets.

fn main() {
    App::build()
        .add_state(MyStates::Load)
        .add_plugins(DefaultPlugins)
        .add_plugin(AudioPlugin)
        .add_plugin(AssetLoaderPlugin::<MyAudioAssets, _>::new(
            MyStates::Load,
            MyStates::Next,
        ))
        .add_system_set(SystemSet::on_update(MyStates::Next).with_system(use_asset_handles.system()))
        .run();
}

#[derive(AssetCollection)]
struct MyAudioAssets {
    #[asset(path = "walking.ogg")]
    walking: Handle<AudioSource>,
    #[asset(path = "flying.ogg")]
    flying: Handle<AudioSource>
}

// 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<MyAudioAssets>, audio: Res<Audio>) {
    audio.play(audio_assets.flying.clone());
}

#[derive(Clone, Eq, PartialEq, Debug, Hash)]
enum MyStates {
    Load,
    Next
}

Structs

AssetLoaderPlugin

Traits

AssetCollection

Derive Macros

AssetCollection