🦀
chip1. RustとBevyで"Hello, world!"
はじめに
2025/04/26時点の内容です。
- rustc 1.86.0
- bevy 0.16.0
bevyは開発初期段階のOSSでまだまだ破壊的なアップデートが入ります。
でも面白いですよ。
準備
cargo init my_bevy_app
で作業フォルダを作りcd my_bevy_app
した後cargo add bevy
します。
cargoのinitとaddで自動編集されるCargo.tomlはこんな感じになってました。
[package]
name = "my_bevy_app"
version = "0.1.0"
edition = "2024"
[dependencies]
bevy = "0.16.0"
単純な Hello, world!
これだとさすがにつまらない。
use bevy::prelude::*;
fn main() -> AppExit
{ //アプリを生成、Systemを登録、そして実行
App::new()
.add_systems( Startup, print_helloworld )
.run()
}
fn print_helloworld()
{ //標準出力へ
println!( "Hello, world!" );
}
少し”らしい” Hello, world!
もう少しそれっぽく。
use bevy::prelude::*;
fn main() -> AppExit
{ //アプリを生成、Pluginを登録、Systemを登録、そして実行
App::new()
.add_plugins( DefaultPlugins ) //ウインドウやスケジュールの面倒を見てもらう
.add_systems( Startup, spawn_helloworld )
.run()
}
fn spawn_helloworld( mut cmds: Commands )
{ //2Dカメラをspawnする
cmds.spawn( Camera2d );
//2Dテキストをspawnする
cmds.spawn
( ( Text2d::new( "Hello, world!" ),
TextFont { font_size: 100.0, ..default() },
)
);
}
おまけ:ターミナルへのログ出力の制御
ターミナルに出力されるデバッグログを減らしたい場合、DefaultPlugins
に含まれるLogPlugin
のfilter
をセットします。
"warn"
、"warn,wgpu_hal=error"
、"error"
などと書けます。
use bevy::
{ prelude::*,
log::LogPlugin, //ログ出力の制御
};
fn main() -> AppExit
{ //ログレベル調整
let filter = "warn,wgpu_hal=error".into();
//アプリを生成、Pluginを登録、Systemを登録、そして実行
App::new()
.add_plugins( DefaultPlugins.set( LogPlugin { filter, ..default() } ) )
.add_systems( Startup, spawn_helloworld )
.run()
}
fn spawn_helloworld( mut cmds: Commands )
{ //2Dカメラをspawnする
cmds.spawn( Camera2d );
//2Dテキストをspawnする
cmds.spawn
( ( Text2d::new( "Hello, world!" ),
TextFont { font_size: 100.0, ..default() },
)
);
}
Discussion