通用状态分支仿真
通用状态分支仿真用于把复杂课程流程组织成多级状态机,通过“进入状态”“退出状态”和“设置条件”来驱动分支变化。它适合多阶段任务、NPC 行为、区域流程、剧情推进和训练步骤编排。
资源文件
| 项目 |
内容 |
| 分类 |
逻辑控制 |
| 可用版本 |
通用状态分支仿真-v1.0.xobj 到 通用状态分支仿真-v1.3.xobj |
| 推荐说明版本 |
通用状态分支仿真-v1.3_文档.txt |
| 更新日志 |
通用状态分支仿真-更新日志.txt |
| 示例图片 |
VR房示例 A区完整状态图.png 等多张配置图 |
| 来源目录 |
00 通用/逻辑控制/通用状态分支仿真 |
使用前提
- 已经把课程流程拆成清晰状态,例如“原地不动”“匪徒靠近”“匪徒喊话结束”“匪徒被攻击”“匪徒死亡”。
- 已经明确状态之间的进入条件和退出条件。
- 需要在编课时配置状态名、条件属性和状态属性。
状态命名规则
资源按层级状态组织参数和事件:
| 形式 |
含义 |
示例 |
1状态名 |
一级状态或根状态。 |
A区流程 |
1.1状态名 |
二级状态。 |
匪徒行为 |
1.1.1状态名 |
三级状态。 |
原地不动 |
进入状态*.* |
进入某个二级状态时触发。 |
进入状态1.1 |
进入状态*.*.* |
进入某个三级状态时触发。 |
进入状态1.1.3 |
星号代表具体状态编号。编排逻辑时,需要用实际状态编号替换通配形式。
参数说明
| 参数 |
作用 |
推荐配置 |
注意事项 |
1状态名 |
配置根状态名称。 |
使用业务含义清楚的名称。 |
不建议只写“状态1”。 |
1.1状态名、1.2状态名、1.3状态名 |
配置二级状态名称。 |
对应课程阶段或对象大状态。 |
状态数量应和实际流程一致。 |
1.1.1状态名 等三级状态名 |
配置三级状态名称。 |
对应具体动作、结果或任务节点。 |
建议和状态图保持一致。 |
进入1.1状态、进入1.2状态、进入1.3状态 |
配置进入二级状态的条件。 |
使用明确条件,例如靠近、完成、死亡、变量达成。 |
原说明较简略,应结合示例图确认条件配置方式。 |
进入1.1.1状态 等三级进入条件 |
配置进入三级状态的条件。 |
每个三级状态只保留必要条件。 |
条件过多时建议拆分流程,避免难以调试。 |
| 空格+按键显隐窗口 |
调试时显示或隐藏状态窗口。 |
调试阶段开启,正式交付前确认是否保留。 |
避免正式训练中误触调试窗口。 |
监听事件
| 事件 |
触发条件 |
典型用途 |
| 进入状态. |
进入指定二级状态。 |
启动阶段逻辑、显示提示、播放语音。 |
| 退出状态. |
退出指定二级状态。 |
清理阶段效果、关闭监听。 |
| 进入状态..* |
进入指定三级状态。 |
触发具体动作、记录数据、切换 NPC 行为。 |
| 退出状态..* |
退出指定三级状态。 |
停止动作、关闭临时效果。 |
| 退出初始状态 |
资源离开初始状态。 |
标记流程正式开始。 |
可执行行为
| 行为 |
效果 |
常见调用时机 |
| 进入初始状态 |
将状态机恢复到初始状态。 |
课程重置、章节重来、调试复位。 |
| 设置条件.-为 |
设置二级状态条件值。 |
外部事件改变状态进入条件。 |
| 设置条件..-为* |
设置三级状态条件值。 |
点击、距离、变量、实体状态改变后驱动分支。 |
使用步骤
- 先画出课程状态图,确认一级、二级、三级状态。
- 在资源参数中填写所有状态名。
- 为每个需要自动进入的状态配置进入条件。
- 在外部逻辑中通过“设置条件”为状态机提供输入。
- 监听“进入状态”和“退出状态”事件,连接实际课程表现。
- 使用调试窗口观察状态变化,确认状态机与状态图一致。
示例流程
以 VR 房匪徒状态为例,可以把“匪徒行为”拆成多个三级状态:
| 状态 |
可能的进入条件 |
进入后动作 |
| 原地不动 |
初始条件成立。 |
播放待机动作。 |
| 匪徒靠近 |
参训人员进入外圈或触发靠近条件。 |
播放靠近或警戒动作。 |
| 匪徒喊话结束 |
喊话音频播放完成。 |
等待下一阶段判断。 |
| 匪徒被攻击 |
命中或受击条件成立。 |
播放受击反馈。 |
| 匪徒死亡 |
存活状态为死亡。 |
触发任务完成或后续流程。 |
常见问题
| 问题 |
建议 |
| 状态没有进入。 |
检查对应“进入状态”的条件是否被设置为满足。 |
| 状态进入后没有表现。 |
确认已经监听对应“进入状态.”或“进入状态..*”事件,并连接动作逻辑。 |
| 状态图和实际运行不一致。 |
开启调试窗口,对照状态图逐个验证条件变化。 |
| 条件越来越难维护。 |
把复杂条件拆到“多条件联合判断”等资源中,再把结果输入状态机。 |