有限状态机是通过控制状态来实现对人物行为的控制 这个状态机的思想不仅仅可以用在AI的实现,更可以用在对玩家角色的控制上 使用状态机的好处就是可以方便的添加人物行为,每个行为彼此间都是相互独立的,一个行为出现问题不会影响到其他行为
首先,FSM由一个基本类(FSMSystem),一个抽象类(FSMState),两个枚举类(StateID,Transition)四个类组成
Claim1.基本类FSMSystem不继承任何的类: 里面存放的是状态机当前执行的状态(FSMState类型对象),还有就是这个角色所具有的所有状态(我们可以用字典来存取,Key=StateID,Value=FSMState),然后就是切换方法PerformTransition(Transistion)
Claim2.抽象类FSMState:MonoBehaviour 这个类是所有状态类的父类 这个类要存放下一状态的ID以及切换到下一个状态的条件(用字典来存,Key=Transition,Value=StateID) 还有就是状态ID StateID 接着就是两个抽象方法Reason()【用来做判断是否执行下一个状态】 和Act()【当前状态角色应该做什么】 两个抽象方法要在子类中去实现 然后这两个方法要在角色脚本身上每一帧去执行