5 个版本
0.14.1 | 2024年8月2日 |
---|---|
0.14.0 | 2024年7月4日 |
0.14.0-rc.4 | 2024年6月27日 |
0.14.0-rc.3 | 2024年6月16日 |
0.14.0-rc.2 | 2024年6月6日 |
#717 in 游戏开发
28,491 每月下载量
用于 106 个框架 (11 直接)
3MB
50K SLoC
在 Bevy 中,状态是应用范围内的相互依赖的有限状态机,通常用于建模程序的较大规模结构:游戏是否暂停,玩家是否处于战斗状态,资源是否加载等等。
此模块提供了 3 种不同的状态类型,所有这些类型都实现了 States
特性
- 标准
States
只能通过手动设置NextState<S>
资源来更改。这些状态是其他状态类型构建的基础,可以用于许多简单模式。请参阅 状态示例 了解简单用例。 SubStates
是其他状态的子状态 - 它们可以通过NextState<S>
手动更改,但如果源状态不在正确的状态,它们将从World
中删除。请参阅 子状态示例 了解基于 derive 宏的简单用例,或阅读特性文档以了解更复杂的情况。ComputedStates
完全由其他状态派生而来 - 它们提供了一个compute
方法,该方法接受源状态并返回它们的派生值。它们在需要源状态的简化视图的情况下特别有用 - 例如,有一个InAMenu
计算状态,从定义多个不同菜单的源状态派生而来。请参阅 计算状态示例 以查看这些状态的用法示例。
大多数与状态相关的实用程序涉及在状态之间运行系统,或在确定是否运行某些系统时使用,尽管它们也可以更直接地使用。这使得在菜单之间切换、添加加载界面、暂停游戏等操作变得更加容易。
具体来说,Bevy提供了以下实用程序
- 3 个转换调度 -
OnEnter<S>
、OnExit<S>
和OnTransition<S>
- 用于在匹配的转换期间触发系统。 - 当给定状态改变时触发的
StateTransitionEvent<S>
。 in_state<S>
和state_changed<S>
运行条件 - 用于确定系统是否应根据当前状态运行。
依赖项
~6–8.5MB
~148K SLoC