/// <summary> /// 向列表中增加状态 /// </summary> /// <param name="fsmState"></param> public void AddFSMState(FSMState fsmState) { if (fsmStates == null) { Debug.Log("新加入的状态为空"); // return; } //状态列表中什么都没有的时候 if (fsmStates.Count == 0) { fsmStates.Add(fsmState); currentState = fsmState; currentActionID = fsmState.ID; return; } //要加入的状态是不是再列表中存在 foreach (FSMState state in fsmStates) { if (state.ID == fsmState.ID) { Debug.Log("状态已经存在"); return; } } //如果不存在则加入状态 fsmStates.Add(fsmState); }
/// <summary> /// 向字典中添加状态 /// </summary> public void AddTransition(Transition trans, FSMActionID actionID) { //如果包含就停止 if (map.ContainsKey(trans)) { return; } map.Add(trans, actionID); Debug.Log("状态:" + trans + "添加成功"); }
/// <summary> /// 删除列表中的状态 /// </summary> public void DeleteState(FSMActionID fsmState) { foreach (FSMState state in fsmStates) { if (state.ID == fsmState) { fsmStates.Remove(state); return; } } Debug.Log("当前列表中不存在这个状态"); }
/// <summary> /// 转变状态 /// </summary> /// <param name="trans"></param> public void PerformTransition(Transition trans) { FSMActionID id = currentState.GetOutAction(trans); currentActionID = id; foreach (FSMState state in fsmStates) { if (state.ID == currentActionID) { currentState = state; break; } } }