🦀

chip1. RustとBevyで"Hello, world!"

2023/07/26に公開

はじめに

2024/09/14時点の内容です。

  • rustc 1.81.0
  • bevy 0.14.2
    bevyは開発初期段階のOSSで、まだまだ破壊的なアップデートが入ります。
    でも、面白いですよ。

a. 単純な Hello, world!

これだとさすがにつまらない。

use bevy::prelude::*;

fn main()
{   App::new()
        .add_systems( Startup, print_helloworld )
        .run();
}

fn print_helloworld()
{   println!( "Hello, world!" );
}

b. 少し”らしい” Hello, world!

もう少しそれっぽく。

use bevy::prelude::*;

//メイン関数
fn main() -> AppExit
{   App::new()
        .add_plugins( DefaultPlugins ) //ウインドウやスケジュールの面倒を見てもらう
        .add_systems( Startup, spawn_helloworld ) //テキストを表示する
        .run()
}

//テキストを表示する
fn spawn_helloworld( mut cmds: Commands )
{   //2Dカメラをspawnする
    cmds.spawn( Camera2dBundle::default() );

    //2Dテキストをspawnする
    let style = TextStyle { font_size: 100.0, ..default() };
    let text = Text::from_section( "Hello, world!", style );
    cmds.spawn( Text2dBundle { text, ..default() } );
}

Hello, world!

おまけ:ターミナルへのログ出力の制御

ターミナルに出力されるデバッグログを減らしたい場合、LogPluginfilterをセットします。
"warn,wgpu_hal=error"と書いたり"error"と書いたりできます。

use bevy::
{   prelude::*,
    log::LogPlugin, //ログ出力の制御
};

//メイン関数
fn main() -> AppExit
{   App::new()
        .add_plugins
        (   //ウインドウやスケジュール等、各種の面倒を見てもらう
            DefaultPlugins
                .set( LogPlugin { filter: "warn".into(), ..default() } )
        )
        .add_systems( Startup, spawn_helloworld ) //テキストを表示する
        .run()
}

//テキストを表示する
fn spawn_helloworld( mut cmds: Commands )
{   //2Dカメラをspawnする
    cmds.spawn( Camera2dBundle::default() );

    //2Dテキストをspawnする
    let style = TextStyle { font_size: 100.0, ..default() };
    let text = Text::from_section( "Hello, world!", style );
    cmds.spawn( Text2dBundle { text, ..default() } );
}

Discussion