虽然gf的流程底层是有限状态机,但这篇文章是要把状态机类如果和游戏中的角色状态一起结合使用。
我们已经知道流程其实是对有限状态机进行了一层封装
这个流程的周期函数的第一个参数其实就是IFSM<IProcedureManager> 类型的
既然流程是一种特殊的状态机
而游戏的角色都需要属于他们自身的状态机
那能不能是这样假设我们为hero01设计的状态机类名为Hero01State
我们能不能模仿流程的方式设计我们的英雄状态
Hero01State : FsmState<T>
因为流程周期函数的第一个参数作者注释为流程所有者,所以作者给出的类型是:IFSM<IProcedureManager>,
我们先要思考一个问题角色状态的所有者是什么,因为在gf里有个类是ProcedureManager它的作用是管理所有的流程所以流程额所有者是这个流程管理者。
如果是角色状态,那么状态的所有者应该就是角色,我觉得角色状态隶属于角色,不需要再来个什么管理器了。因为我们要用 所有者.ChangeState<TState>方法来切换状态,不同的角色的所有者不一样,不像流程那样可以由同一个管理器---大家的所有者 来切换。
所以我们的状态类应该是这样的Hero01State : FsmState<英雄实体>
生命周期函数里的参数是 IFsm<英雄实体>
使用方式很简单看看 mudamuda 的博客吧
http://www.benmutou.com/archives/2643