/// <summary> /// 检测是否要切换状态 /// </summary> /// <param name="fsm">使用的状态机</param> public void Reason(FSMBase fsm) { for (int i = 0; i < Triggers.Count; ++i) { if (Triggers[i].HandleTrigger(fsm)) { FSMStateID stateID = map[Triggers[i].TriggerID]; fsm.ChangeActiveState(stateID); return; } } }
//检测当前状态的条件是否满足 public void Reason(FSMBase fsm) { for (int i = 0; i < triggers.Count; i++) { //发现条件满足 if (triggers[i].HandleTrigger(fsm)) { //从映射表中获取输出状态 FSMStateID stateID = map[triggers[i].TriggerID]; //切换状态 fsm.ChangeActiveState(stateID); return; } } }
/// <summary> /// *检测当前状态是否满足 /// </summary> public void Reason(FSMBase fsm) { for (int i = 0; i < Triggers.Count; i++) { //如果返回值为true if (Triggers[i].HandleTrigger(fsm)) { //从表中获取输出状态 FSMStateID stateID = map[Triggers[i].TriggerID]; //切换状态 fsm.ChangeActiveState(stateID); return; } } }