通过前面两篇教程的讲解,我们的同学们对于Cocos2d-x中的状态机应该都有大概印象了,下面本篇教程将带大家深入了解真正的状态机。
正文:
前面两篇教程介绍了一大堆东西,但似乎一直没有看到状态机这个东东,上篇教程里面说的那些,看起来也就是普通的状态模式的应用,我们似乎感觉不到状态机的存在啊~(虽然那确实是状态机的应用)。
那么,现在,我们来创建一个状态机类,它不神秘,它仅仅是用来管理对象的状态相关的东西,让MutouT类得到解脱。
1. 创建MutouTFSM类
有限状态机简称FSM,我们现在来创建这样一个类:
有没有发现这个MutouTFSM和之前的MutouT类有点像?
现在,所有和状态有关的操作都放到MutouTFSM状态机类,MutouT类只要专心地做他该做的事情就好了写代码、休息、写教程)。
看看MutouTFSM的实现:
非常简单,MutouTFSM会保存一份MutouT对象,然后我们在update函数里执行当前状态的execute函数,简单的说,就是,MutouT类的changeState和update函数都放到MutouTFSM里了。
2. 被解放的MutouT类
我们再来看看新的MutouT类:
看到了吧,MutouT类多了一个MutouTFSM状态机变量。
然后我们看看MutouT的实现:
和以前的实现是一样的,只是少了changeState函数,并且,留意到update函数了吗?
void MutouT::update( float dt ) {
this->mFSM->update(dt);
}
是的,它实际上是调用了状态机的update函数。
3. 这样抽离一个MutouTFSM状态机类有什么好处?
为嘛这么大费周章地整一个状态机类倒底有什么用?没发现什么新功能啊~
当然有用了,首先,这样做每个类的职责分明,就好比老大让我去做美工的工作,我才不愿意~!我可是一个写代码的人~
然后,万一以后我们想给MutouT类换状态呢?状态类的接口改了呢?(虽然这很不应该)难道我们要打开我们的MutouT类去修改吗?
这个教程深刻体会到,讲解如何在Cocos2D-X制作状态机。
上一篇:网络游戏开发者的心得
下一篇:制作游戏教程 游戏制作实例
¥66.00
¥108.00
¥299.00
¥118.00