iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0

繼續學習Bevy

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!

上一篇
[Day 10] Bevy 遊戲引擎學習 始動
下一篇
[Day 12] Bevy Plugins
系列文
三十歲時在做什麼?有沒有空?可以來做遊戲嗎?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言