跳转至

通用状态分支仿真

通用状态分支仿真用于把复杂课程流程组织成多级状态机,通过“进入状态”“退出状态”和“设置条件”来驱动分支变化。它适合多阶段任务、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 行为。
退出状态..* 退出指定三级状态。 停止动作、关闭临时效果。
退出初始状态 资源离开初始状态。 标记流程正式开始。

可执行行为

行为 效果 常见调用时机
进入初始状态 将状态机恢复到初始状态。 课程重置、章节重来、调试复位。
设置条件.- 设置二级状态条件值。 外部事件改变状态进入条件。
设置条件..-为* 设置三级状态条件值。 点击、距离、变量、实体状态改变后驱动分支。

使用步骤

  1. 先画出课程状态图,确认一级、二级、三级状态。
  2. 在资源参数中填写所有状态名。
  3. 为每个需要自动进入的状态配置进入条件。
  4. 在外部逻辑中通过“设置条件”为状态机提供输入。
  5. 监听“进入状态”和“退出状态”事件,连接实际课程表现。
  6. 使用调试窗口观察状态变化,确认状态机与状态图一致。

示例流程

以 VR 房匪徒状态为例,可以把“匪徒行为”拆成多个三级状态:

状态 可能的进入条件 进入后动作
原地不动 初始条件成立。 播放待机动作。
匪徒靠近 参训人员进入外圈或触发靠近条件。 播放靠近或警戒动作。
匪徒喊话结束 喊话音频播放完成。 等待下一阶段判断。
匪徒被攻击 命中或受击条件成立。 播放受击反馈。
匪徒死亡 存活状态为死亡。 触发任务完成或后续流程。

常见问题

问题 建议
状态没有进入。 检查对应“进入状态”的条件是否被设置为满足。
状态进入后没有表现。 确认已经监听对应“进入状态.”或“进入状态..*”事件,并连接动作逻辑。
状态图和实际运行不一致。 开启调试窗口,对照状态图逐个验证条件变化。
条件越来越难维护。 把复杂条件拆到“多条件联合判断”等资源中,再把结果输入状态机。