应用构造器

可参考的官方例子:所有例子 :)

特别是可以看看完整的游戏例子: alien_cake_addict, breakout.


要进入 bevy 的 runtime,你需要配置一个 App。通过 App 是你可以定义构成你的项目的所有组成部分:插件 plugins系统 systems事件 event 类型、状态 states阶段 stages......

从技术上讲,App 包含 ECS 世界(所有数据被存储在其中)和调度器(所有要运行的系统被存储在其中)。对于高级的使用情况,子应用程序 是一种实现拥有一个以上 ECS 世界和调度器的方式。

本地资源不需要被注册。它们是它们各自系统的一部分。

组件类型不需要被注册。


调度器(还)不能在运行时修改,你想运行的所有系统必须提前在 App 中添加/配置。

ECS 世界中的数据可以在任何时候被修改,在系统中使用 Commands 创建/销毁你的实体资源,或不使用系统而使用 World 直接访问。

资源也可以提前在应用程序构造器中初始化。


你还需要添加具有 Bevy 内置功能的插件组:如果你正在制作一个完整的游戏或应用程序,可以选择 DefaultPlugins,如果是开发服务器程序之类的,可以选择 MinimalPlugins

注意,有一些特殊的配置资源,如果你想使用它们,必须先添加才能生效。


    fn main() {
        App::new()
            // make sure to add any config resources first, before Bevy:
            .insert_resource(WindowDescriptor {
                // ...
                ..Default::default()
            }) // etc...

            // Bevy itself:
            .add_plugins(DefaultPlugins)

            // resources:
            .insert_resource(StartingLevel(3))
            // if it implements `Default` or `FromWorld`
            .init_resource::<MyFancyResource>()

            // events:
            .add_event::<LevelUpEvent>()

            // systems to run once at startup:
            .add_startup_system(spawn_player)

            // systems to run each frame:
            .add_system(player_level_up)
            .add_system(debug_levelups)
            .add_system(debug_stats_change)
            // ...

            // launch the app!
            .run();
    }