public void PerformTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransitionID) { Debug.LogError("要执行的转换条件为空:" + trans); return; } SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans); if (nextStateID == SoldierStateID.NullState) { Debug.LogError("在转换条件 [" + trans + "] 下, 没有对应的转换状态"); return; } foreach (ISoldierState s in mStates) { if (s.stateID == nextStateID) { mCurrentState.DoBeforeLeaving(); mCurrentState = s; mCurrentState.DoBeforeEntering(); return; } } }
public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("要添加的状态为Null"); return; } if (mStates.Count == 0) { mStates.Add(state); mCurrentState = state; return; } foreach (ISoldierState s in mStates) { if (s.stateID == state.stateID) { Debug.LogError("要添加的状态ID: [" + state.stateID + " ]已存在"); return; } } mStates.Add(state); }
/// <summary> /// 执行转换状态 /// </summary> /// <param name="trans"></param> public void PerformTranstion(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.LogError("要执行的转换条件为空!"); return; } SoldierStateID nextStateID = mCurrentState.GetOutPutStateID(trans); //得到该转换条件下的下个状态ID if (nextStateID == SoldierStateID.NullStateID) { Debug.LogError("在转换条件:" + "[" + trans + "]" + "没有对应的转换状态!"); return; } mCurrentStateID = nextStateID;//更新当前状态ID foreach (ISoldierState s in mStates) { if (s.stateID == nextStateID) { mCurrentState.DoBeforeLeaving(); mCurrentState = s; //更新当前状态 mCurrentState.DoBeforeEntering(); break; } } }
public void performTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.LogError("trans is null"); return; } SoldierStateID nextId = mCurrState.getOutPutState(trans); if (nextId == SoldierStateID.NullState) { Debug.LogError("no state with trans"); return; } foreach (ISoldierState s in mStates) { if (s.StateID == nextId) { mCurrState.doBeforeLeaving(); mCurrState = s; mCurrState.doBeforeEntering(); return; } } }
public void PerformTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTransition) { Debug.LogError("要执行的转换条件为空"); return; } //获取要转换为的状态 SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans); if (nextStateID == SoldierStateID.NullState) { Debug.Log("要转换的状态ID[" + nextStateID + "]为空"); return; } foreach (ISoldierState state in mStates) { //如果在集合中找到转换为的状态 if (state.StateID == nextStateID) { //执行退出当前状态之前的操作 mCurrentState.DoBeforeLeaving(); //将当前状态变为将转换的状态 mCurrentState = state; //执行进入当前状态之前的操作 mCurrentState.DoBeforeEntering(); break; } } }
public void DeleteState(ISoldierState state) { if (state == null) { Debug.LogError("要删除的状态为空"); return; } if (mStates.Count == 0 || !mStates.Contains(state)) { Debug.LogError("要删除的状态ID[" + state + "]不存在"); } mStates.Remove(state); }
public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("SoldierFSMSystem Error: 要添加的状态为空"); return; } if (mStates.Count == 0) { mStates.Add(state); mCurrentState = state; return; } foreach (ISoldierState s in mStates) { if (s.StateID == state.StateID) { Debug.LogError("SoldierFSMSystem Error: 要添加的状态" + state.StateID + "已被添加"); return; } } mStates.Add(state); }
public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("添加对象[" + state + "]为空"); } if (mState.Count == 0) { mState.Add(state); mCurrentState = state; mCurrentState.DoBeforeEntering(); return; } foreach (ISoldierState s in mState) { if (s.stateID == state.stateID) { Debug.LogError("添加对象[" + state + "]已经存在"); return; } } mState.Add(state); }
public void PerformTransition(SoldierTransition trans) { if (trans == SoldierTransition.NullTansition) { Debug.LogError("SoldierFSMSystem Error: 要执行的转换条件" + trans + "不存在"); return; } SoldierStateID nextStateID = mCurrentState.GetOutPutState(trans); if (nextStateID == SoldierStateID.NullState) { Debug.LogError("SoldierFSMSystem Error: 转换条件" + trans + "下,没有对应的状态"); return; } foreach (ISoldierState s in mStates) { if (s.StateID == nextStateID) { mCurrentState.DoBeforeLeaving(); mCurrentState = s; mCurrentState.DoBeforeEntering(); } } }
public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("要添加的状态为空"); return; } if (mStates.Count == 0) { mStates.Add(state); mCurrentState = state; return; } foreach (ISoldierState soldierState in mStates) { if (soldierState.StateID == state.StateID) { Debug.LogError("要添加的状态ID" + soldierState.StateID + "已经存在"); } } mStates.Add(state); }
public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("要添加的状态为空"); return; } if (mStates.Count == 0) { mStates.Add(state); mCurrentState = state; return; } //遍历状态集合 foreach (ISoldierState s in mStates) { if (s.stateID == state.stateID)//说明要添加的状态已经存在 { Debug.LogError("要添加的状态ID[" + s.stateID + "]已经添加"); return; } } //说明状态不存在于集合中,所以把状态添加进去 mStates.Add(state); }
public void addState(ISoldierState state) { if (state == null) { Debug.LogError("state is null"); return; } if (mStates.Count == 0) { mStates.Add(state); mCurrState = state; return; } foreach (ISoldierState s in mStates) { if (s.StateID == state.StateID) { Debug.LogError("state is exist"); return; } } mStates.Add(state); }
/// <summary> /// 执行转换,切换到对应条件的状态类 /// </summary> /// <param name="transition"></param> public void PerformTransition(SoldierTransition transition) { if (transition == SoldierTransition.NullTransition) { Debug.LogError("要转换的条件为空 " + transition); return; } SoldierStateID nextStateID = m_CurrentState.GetOutPutState(transition); if (nextStateID == SoldierStateID.NullState) { Debug.LogError("当前状态 [" + m_CurrentState.StateID + "]" + " 转换条件 [" + transition + "] 没有对应的转换状态"); return; } foreach (var s in mLst_States) { if (s.StateID == nextStateID) { m_CurrentState.DoBeforeLeaving(); m_CurrentState = s; m_CurrentState.DoBeforeEntering(); return; } } }
/// <summary> /// 添加状态到状态链表中 /// </summary> /// <param name="state"></param> public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("状态为空,不添加"); return; } if (mLst_States.Count == 0) { mLst_States.Add(state); m_CurrentState = state; return; } foreach (ISoldierState s in mLst_States) { if (s.StateID == state.StateID) { Debug.LogError("要添加的状态ID已经存在 ID= " + s.StateID.ToString()); return; } } mLst_States.Add(state); }
/// <summary> /// 添加状态,并设置第一个添加的为初始状态 /// </summary> /// <param name="state"></param> public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("添加的状态为空!"); return; } if (mStates.Count == 0) { mStates.Add(state); mCurrentState = state; mCurrentStateID = state.stateID; return; } foreach (ISoldierState s in mStates) { if (s.stateID == state.stateID) { Debug.LogError("要添加的状态ID:" + "[" + s.stateID.ToString() + "]" + "已经添加了"); return; } } mStates.Add(state); }
public void AddState(ISoldierState state) { if (state == null) { Debug.LogError("要添加的状态为空"); return; } if (mStates.Count == 0) { mStates.Add(state); //第一个状态设置为默认状态 mCurrentState = state; return; } foreach (ISoldierState temp in mStates) { if (temp.StateID == state.StateID) { Debug.LogError("要添加的状态ID[" + temp.StateID + "]已经添加"); return; } } mStates.Add(state); }