Agent Skills
返回列表
🤖

Bevy ECS 架构指南

AI Agent 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装规范名 @user_3c6cb52e/bevy-ecs-sh-sw1mc7。

技能介绍

当 Bevy 开始报 "conflicting accesses"

Bevy 的 API 每个 minor 版本都会变动,0.16 这轮尤其狠:delta_seconds() 改名 delta_secs(),Camera2dBundle、SpriteBundle 等 bundle 被移除,旧博客和示例代码往往直接编译失败。更麻烦的是运行时 panic——两个系统同时写同一组件触发借用冲突,或角色移动速度跟着帧率漂移,问题常在渲染管线深处才暴露。

这个技能把关注点收敛到 ECS 核心:

  • 版本锚定:Cargo.toml 锁定 bevy = "0.16",以对应版本文档为准,不混用跨版本片段
  • 数据建模:#[derive(Component)] 描述实体数据,#[derive(Resource)] 描述全局唯一数据(分数、设置、Time 时钟)
  • 系统即普通函数:参数声明数据访问——Query 读实体、Res/ResMut 读写资源、Commands 做延迟生成/销毁;访问不冲突时系统自动并行
  • 时间驱动:位移一律乘 time.delta_secs(),杜绝帧率依赖
  • 显式排序:仅对真正有依赖的系统用 .chain() 或显式约束,分支交给 run_if,相关装配收拢进 Plugin

适用边界

它只覆盖 ECS 核心层。深度渲染、自定义 shader/pipeline、UI 布局、音频需另行处理。若算法本身引擎无关(如寻路、程序化生成),可搭配 game-ai 或 procedural-gen 技能使用。

使用场景

  • 刚锁定 bevy = "0.16" 后写游戏代码,需要搭 App 入口、注册 DefaultPlugins 与系统时
  • 角色移动速度随帧率波动,需要用 time.delta_secs() 改成帧率无关更新时
  • 两个系统同时读写同一组件触发借用冲突 panic,需要用 With/Without 或 ParamSet 拆分时
  • 从 0.15 升级到 0.16 后找不到 Camera2dBundle,需要改为直接生成 Camera2d/Sprite/Transform 组件时

适合人员

  • 使用 Rust 和 Bevy 0.16 开发游戏、正在搭 ECS 架构的独立开发者,想分清组件、资源、系统的边界
  • 从 Bevy 0.15 升级到 0.16 被 bundle 移除和 API 改名卡住的开发者,需要确认新写法
  • 在 Bevy 里写系统时遇到借用冲突 panic 或帧率依赖移动问题、想定位 ECS 访问模式错误的工程师