佐藤のメモ帳

Rust, Python, Java, AWS, etc...

Rust Bevy Systemについて

はじめに

本記事はBevy非公式(と思えないほど素晴らしい)サイトのメモである。

bevy-cheatbook.github.io

メモ

BevyにおいてSystemとはゲームロジックを含む関数である。 Systemは以下の特別な引数のみを持つ。

  • ResourceにアクセスするためのRes/ResMut
  • ComponentにアクセスするためのQuery
  • EntityやComponent、Resourceを生成、削除するためのCommand
  • Eventを送受信するためのEventWriter/EventReader
fn debug_start(
    // Resourceにアクセスする
    start: Res<StartingLevel>
) {
    eprintln!("Starting on level {:?}", *start);
}

Systemを実行するためには、App BuilderでBevyにSystemを登録する必要がある。

fn main() {
    App::build()
        // ...

        // 起動時に1回のみ実行
        .add_startup_system(init_menu.system())
        .add_startup_system(debug_start.system())

        // フレーム毎に実行
        .add_system(move_player.system())
        .add_system(enemies_ai.system())

        // ...
        .run();
}