前言:状态机模式是一个游戏常用的经典设计模式,常被用作管理一种物体的各种状态(例如管理人物的行走,站立,跳跃等状态)。
(Unity里的Animator就是
前言:状态机模式是一个游戏常用的经典设计模式,常被用作管理一种物体的各种状态(例如管理人物的行走,站立,跳跃等状态)。

(Unity里的Animator就是一种典型的状态机,用于控制动画状态之间的切换)
假如我们正在开发一款动作游戏,当前的任务是实现根据输入来控制主角的行为——当按下B键时,他应该跳跃。
直观的代码:
if (input == PRESS_B) { if (!m_isJumping) { m_isJumping = true; Jump();//跳跃的代码 } }
后来我们需要添加更多行为了,所有行为如下:
站立时按下 ↓ 键 =》 蹲下。
蹲下时按下 ↓ 键 =》 站立。
站立时按下 B 键 =》 跳跃。
跳跃时按下 ↓ 键 =》触发 俯冲。
if (input == PRESS_B) { //如果在站立时且没在跳跃,则跳跃 if (!m_isJumping && m_isStanding) { m_isJumping = true; player.jump();//跳跃的代码 } } else if (input == PRESS_DOWN) { //如果在跳跃时且没在俯冲,则俯冲 if (m_isJumping && !m_isDiving) { m_isDiving player.dive();//俯冲的代码 } //如果没在跳跃 else if (!m_isJumping) { //如果站立时,则蹲下 if (m_isStanding) { m_isStanding = false; player.sneak();//蹲下的代码 }