用途:当应用需要大规模模式(暂停、菜单、加载)时使用 bevy::state;当某个实体需要小的模式标志时,用组件表示。两者所有者应保持分离。
主要能力:bevy::state 中的状态是应用范围的有限状态机,有三种类型。标准 States 仅通过设置 NextState<S> 资源改变;SubStates 也使用 NextState<S>,当源状态不满足要求时从 World 中移除;ComputedStates 通过 compute 方法派生自其他状态。转换调度包括 OnEnter<S>、OnExit<S> 和 OnTransition<S>,StateTransitionEvent<S> 在状态 S 变化时触发,运行条件有 in_state<S> 和 state_changed<S>。DespawnOnEnter<S> 与 DespawnOnExit<S>(state_scoped)可在相应转换时销毁实体。bevy_state 随默认 bevy 应用插件提供,用 init_state 安装状态,用 add_sub_state 安装子状态。
用法:依赖为 bevy = "0.20"。应用模式定义为实现 States 的枚举,默认变体可用 #[default];游戏系统用 in_state 限定运行;暂停时写入 NextState。单实体模式把枚举存为 Component 并在系统中分支,该枚举不是 States 类型。
适用场景与限制:适合菜单、暂停、加载等应用级模式,以及仅在父模式内存在的子模式(SubStates)和派生模式(ComputedStates)。每个实体独有的姿态(如 Idle、Attack)用组件而不是 States。不要从两个未排序的系统同时可变查询同一组件,除非用 .chain() 排序;不要臆造物理、导航、网络或 XR 库;不要使用第三方 crate 或非文档化 API;本文档只涉及已记录的 Bevy crate 与模块。动画图请使用 bevy-animation-graph。目标为 Bevy 0.20+。