Bevy

Tags
rustgame

bevy 的 add_system 函数作为参数 // impl IntoSystemAppConfig<M>

system 支持各种方法 // impl_system_collection 宏

system 的参数支持自由组合 // impl_system_function 宏

system 的 Query 参数支持自由组合 // impl_anytuple_fetch 宏

app.run() 会替换 app 为 空(原因未知),不执行 run 就可以一直用 update 手动调度更新

Reflect 组件让 world 能被序列化成 scene,例子

Bevy 例子:https://dev.to/sbelzile/rust-platformer-part-1-bevy-and-ecs-2pci

非官方书 https://bevy-cheatbook.github.io

ECS 是扁平数据结构,但可以逻辑分层 Parent and Children,移除实体时需要双向删除

Bevy 的默认清理策略是每帧清除事件,但使用双缓冲,以便前一帧更新的事件保持可用

Bundle 是创建实体的一种便利,不能直接查询

全局访问的数据适合创建成资源,只在 ECS 模式中访问时创建成组件

系统参数类型:

系统能并发运行,.after/.before 指定系统运行顺序

app.add_state 状态能指定系统,系统中能以资源 State<T> 访问,切换 state 后需要 input.rest,能指定为系统运行条件

0.10 没有了, 用 SystemSet 替代】 Stage 是硬同步点,同一个 Stage 上的系统并发运行完才会进入下一个 Stage,内置 Stage:

  • PreStartup, Startup, PostStartup
  • First, PreUpdate, Update, PostUpdate, Last
  • Extract, Prepare, Queue, PhaseSort, Render, Cleanup

FixedTimestep::step(1.0) 指定固定刷新周期

play() 播放音频

interaction 组件判断按钮状态

动画?

SuperMade with Super