SuperAPI AI 工具集

bevy-ecs

通用与其它

查看项目

更新于 10-16 05:48

技能介绍

用途:围绕 Bevy 的实体组件系统(ECS)组织 Rust 游戏代码,包括搭建 App 与插件、定义组件与资源、编写查询系统、调度与帧率无关更新。适用于 Cargo.toml 依赖 bevy、代码调用 App::new()、add_systems、Query 或 Commands 的场景;深度渲染、自定义着色器、UI 布局与音频属于其他关注点。

主要能力:用 App::new().add_plugins(DefaultPlugins) 获得窗口、输入、渲染与时间;把系统注册到 Startup(一次)和 Update(每帧)。用 #[derive(Component)] 表示每实体数据,用 #[derive(Resource)] 表示全局数据;自 0.19 起 Resource 继承 Component,不要同时派生两者。系统参数声明访问:Query 查实体,Res/ResMut 读写资源,Commands 延迟生成/销毁。用 time.delta_secs() 保证速度与帧率无关;用 .chain() 或显式约束排序,用 run_if 做条件门控,用 Plugin 分组相关设置。

用法要点:先读 Cargo.toml 与 Cargo.lock 锁定版本,新项目用 bevy = "0.20",不要静默跨小版本迁移。查询过滤可用 With/Without/Changed;两个可变 Transform 查询需用 With/Without 或 ParamSet 避免冲突。构建用 cargo run,启动时会报告冲突查询。

限制与常见问题:delta_seconds() 在 0.16 改名为 delta_secs();Camera2dBundle/SpriteBundle 在 0.16 移除,直接生成组件;Commands 延迟到同步点生效,同帧后续查询看不到新实体;系统默认并行,顺序需显式声明;0.19 起资源存于带 IsResource 的实体上,需用 Without<IsResource> 或自有标记组件;0.20 生命周期事件写作 On<Add<Player>>,Name 需 &'static str 或 String,事件系统改为消息系统(MessageReader/MessageWriter/add_message)。具体迁移细节以对应版本文档与迁移指南为准。