Ogre的状态框架可以参照官网上的这篇Wiki: Advanced Ogre Framework . 基本思路就是通过一个状态机基类来实现游戏中各个状态的切换(如魔兽争霸中的:主菜单, 游戏状态,游戏暂停,游戏中菜单,游戏退出等)。
上面的代码是我根据《游戏人工智能编程案例精粹》中状态机实现的状态类。这种设计是考虑到状态的拥有者可以有不同的层级,比如可以是Application(即整个游戏,游戏会有各种不同的状态),也可以是游戏中的一个NPC(他的进攻,逃跑等状态),而所有状态都基本上都是由这几个函数构成,因此通过参数以及C++模板将拥有者和状态分离,增强了其可复用性。
例如游戏状态的构建可由下面代码构成: