Bevy TLDR – Game development with Bevy summarized
7 months ago
- #rust
- #game-development
- #ecs
- Bevy是一个模块化、高性能的实体组件系统(ECS)游戏引擎,基于Rust语言构建。
- Bevy中的实体是内存数据库中行的标识符,而组件则是列。
- 组件可以拥有生命周期钩子(on_add, on_insert, on_replace, on_remove, on_despawn)来实现副作用。
- 资源是特殊的无实体组件,为系统提供便捷访问方式。
- Bevy中的系统是Rust函数,其参数必须实现SystemParam特性。
- 命令(Commands)用于高效改变World状态,将变更排队至下个调度周期执行。
- 应用(App)通过调度器(Startup/Update/FixedUpdate)协调系统,并能管理不同状态。
- 插件(Plugins)将相关功能分组,可添加到App中以扩展能力。
- 查询(Queries)让系统能访问实体组件,支持条件过滤。
- 资源(Assets)通过AssetServer异步加载,支持事件和状态追踪。
- 消息(Messages)和事件(Events)实现系统间通信,前者缓冲处理后者立即触发。
- Bevy中通过ChildOf和Children等组件管理父子层级关系。
- 输入处理支持键盘/鼠标/手柄/触摸,通过ButtonInput等资源实现。
- 相机(Cameras)管理渲染目标、投影和视角位置,分2D/3D两种类型。
- UI采用flexbox或CSS网格布局的节点系统,通过Interaction组件实现交互。
- 定时器(Timers)支持单次/循环模式,用于延时触发操作。
- 音频系统通过AudioSource和AudioSink控制播放,支持空间音效。
- 场景(Scenes)支持将实体和组件序列化/反序列化到文件。
- 物理引擎需通过Avian等插件添加,支持刚体和碰撞检测。