应用构造器
可参考的官方例子:所有例子 :)
特别是可以看看完整的游戏例子:
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();
}