⛑️

[Bevy] Resourceを作る

2025/03/02に公開

BevyのResourceは独立したグローバルなデータです。ユニークでなければいけないので、例えばゲームの音量とかボタンの設定などに使えます。
Bevyのバージョンは0.15.3です。

// まずリソースの構造体を定義します
#[derive(Resource)]
struct MyResource{
    hoge: u16,
    // Other attributes
}
// リソースのデフォルトの値を定義します
impl Default for MyResource{
    fn default() -> MyResource{
        MyResource{
            hoge: 1,
            // Other attributes
        }
    }
}

// アプリでリソースを初期化します。デフォルトの値が割り当てられます
fn main(){
    App::new()
        .add_plugins(DefaultPlugins)
        .init_resource::<MyResource>()
        .add_systems(Startup, setup)
        .run();
}

// システム内でリソースを扱えるようになります
fn setup(
    mut my_res: ResMut<MyResource>,
){
    println!("my_res.hoge: {}", my_res.hoge) // 1
    my_res.hoge = 2;
    println!("updated my_res.hoge: {}", my_res.hoge) // 2
}

参考
https://bevy-cheatbook.github.io/programming/res.html
https://github.com/bevyengine/bevy/blob/main/crates/bevy_ecs/src/system/system_param.rs

Discussion