Bevy啟動的方式讓我想到寫React, Vue的感覺
use bevy::prelude::*;
fn main() {
App::new().run();
}
執行 cargo run
Compiling learn_bevy_game v0.1.0 (/Rust/learn_bevy_game)
Finished dev [unoptimized + debuginfo] target(s) in 4.58s
Running `target/debug/learn_bevy_game`
再來是ECS的練習
use bevy::prelude::*;
fn main() {
// 建立一個新的應用
App::new()
// 在啟動階段,加入一個系統來增加人物
.add_systems(Startup, add_people)
// 在更新階段,先輸出"hello world!",然後向每個人問好
.add_systems(Update, (hello_world, greet_people))
.run(); // 執行應用
}
// 一個簡單的系統,只在控制台輸出"hello world!"
fn hello_world() {
println!("hello world!");
}
// 定義一個Person struct,但不包含任何資料
#[derive(Component)]
struct Person;
// 定義一個Name struct,包含一個String類型的名稱
#[derive(Component)]
struct Name(String);
// 一個系統,用於添加三個有名稱的人物到ECS中
fn add_people(mut commands: Commands) {
commands.spawn((Person, Name("Elaina Proctor".to_string())));
commands.spawn((Person, Name("Renzo Hume".to_string())));
commands.spawn((Person, Name("Zayna Nieves".to_string())));
}
// 一個系統,用於向每個人問好
fn greet_people(query: Query<&Name, With<Person>>) {
for name in &query {
println!("hello {}!", name.0);
}
}
執行結果
hello world!
hello Elaina Proctor!
hello Renzo Hume!
hello Zayna Nieves!