//执行状态转换 public void PerformTransition(EnemyTransition trans) { if (trans == EnemyTransition.NullTransition) { Debug.LogError("转换条件不能为空"); return; } EnemyStateID nextId = currentState.GetOutputState(trans); if (nextId == EnemyStateID.NullStateID) { Debug.LogError("转换的状态不能为空"); return; } foreach (EnemyState state in states) { if (state.ID != nextId) { continue; } currentState.DoBeforeLeaving(); //转换前执行现有状态的DoBeforeLeaving方法 currentState = state; currentState.DoBeforeEntering(); //转换完成,执行转换后状态的DoBeforeEntering方法 return; } }
public void PerformTrnsition(EnemyTransition trans) { if (trans == EnemyTransition.NullTansition) { Debug.LogError(GetType() + "/PerformTrnsition()/ trans is NullTansition "); return; } EnemyStateID nextStateId = mCurState.GetOutputState(trans); if (nextStateId == EnemyStateID.NullState) { Debug.LogError(GetType() + "/PerformTrnsition()/ stateId is NullState "); return; } foreach (IEnemyState s in mStateLst) { if (s.StateID == nextStateId) { mCurState.DoBeforeLeaving(); mCurState = s; mCurState.DoBeforeEntering(); } } }
public void PerformTransition(EnemyTransition trans) { if (trans == EnemyTransition.NullTansition) { Debug.LogError("要执行的转换条件不能为Null"); return; } EnemyStateID nextStateID = mCurrentState.GetOutputState(trans); if (nextStateID == EnemyStateID.NullState) { Debug.LogError("在转换条件 [" + trans + " ]下,没有对应的转换状态"); return; } foreach (IEnemyState s in mStates) { if (s.stateID == nextStateID) { mCurrentState.DoBeforeEntering(); mCurrentState = s; mCurrentState.DoBeforeEntering(); return; } } }
/// <summary> /// 执行转换状态 /// </summary> /// <param name="trans"></param> public void PerformTranstion(EnemyTransition trans) { if (trans == EnemyTransition.NullTransition) { Debug.LogError("要执行的转换条件为空!"); return; } EnemyStateID nextStateID = mCurrentState.GetOutPutStateID(trans); //得到该转换条件下的下个状态ID if (nextStateID == EnemyStateID.NullStateID) { Debug.LogError("在转换条件:" + "[" + trans + "]" + "没有对应的转换状态!"); return; } mCurrentStateID = nextStateID;//更新当前状态ID foreach (IEnemyState s in mStates) { if (s.stateID == nextStateID) { mCurrentState.DoBeforeLeaving(); mCurrentState = s; //更新当前状态 mCurrentState.DoBeforeEntering(); break; } } }
public void performTransition(EnemyTransition trans) { if (trans == EnemyTransition.NullTransition) { Debug.LogError("trans is null"); return; } EnemyStateID nextId = mCurrState.getOutPutState(trans); if (nextId == EnemyStateID.NullState) { Debug.LogError("no state with trans"); return; } foreach (IEnemyState s in mStates) { if (s.StateID == nextId) { mCurrState.doBeforeLeaving(); mCurrState = s; mCurrState.doBeforeEntering(); return; } } }
public void PerformnTransition(EnemyTransition trans) { if (trans == EnemyTransition.NullTransition) { Debug.Log("PerformnTransition 无法执行 NullTransition "); return; } EnemyStateID id = CurrentEnemyState.GetIDByTransition(trans); if (id == EnemyStateID.NullState) { Debug.Log("PerformnTransition 无法执行 NullState "); return; } foreach (AbsEnemyState s in statesList) { if (s.StateID == id) { CurrentEnemyState.DoBeforeLeaving(); CurrentEnemyState = s; CurrentEnemyState.DoBeforeEntering(); } } }
public void AddTransition(EnemyTransition trans, EnemyStateID id) { // Check if anyone of the args is invalid if (trans == EnemyTransition.NullTransition) { Debug.LogError("EnemyFSMState ERROR: NullTransition is not allowed for a real transition"); return; } if (id == EnemyStateID.NullStateID) { Debug.LogError("EnemyFSMState ERROR: NullStateID is not allowed for a real ID"); return; } // Since this is a Deterministic FSM, // check if the current transition was already inside the map if (map.ContainsKey(trans)) { Debug.LogError("EnemyFSMState ERROR: State " + stateID.ToString() + " already has transition " + trans.ToString() + "Impossible to assign to another state"); return; } map.Add(trans, id); }
public void PerformTransition(EnemyTransition trans) { if (trans == EnemyTransition.NullTransition) { Debug.LogError("要执行的转换条件为空"); return; } //获取要转换为的状态 EnemyStateID nextStateID = mCurrentState.GetOutPutState(trans); if (nextStateID == EnemyStateID.NullState) { Debug.Log("要转换的状态ID[" + nextStateID + "]为空"); return; } foreach (IEnemyState state in mStates) { //如果在集合中找到转换为的状态 if (state.StateID == nextStateID) { //执行退出当前状态之前的操作 mCurrentState.DoBeforeLeaving(); //将当前状态变为将转换的状态 mCurrentState = state; //执行进入当前状态之前的操作 mCurrentState.DoBeforeEntering(); break; } } }
/// <summary> /// 下个要转换到的状态 /// </summary> /// <param name="trans"></param> /// <returns></returns> public EnemyStateID GetOutPutStateID(EnemyTransition trans) { if (mMap.ContainsKey(trans)) { return(mMap[trans]); } return(EnemyStateID.NullStateID); }
public void DeleteTransition(EnemyTransition trans) { if (mMap.ContainsKey(trans) == false) { return; } mMap.Remove(trans); }
public void DeleteTransition(EnemyTransition trans, EnemyStateID id) { if (!mMap.ContainsKey(trans)) { Debug.LogError("删除转换条件的时候,转换条件: " + trans + " 不存在"); return; } mMap.Remove(trans); }
public void DeleteTransition(EnemyTransition transition) { if (!m_Map.ContainsKey(transition)) { Debug.LogError("删除转换条件失败,不存在该条件 : " + transition.ToString()); return; } m_Map.Remove(transition); }
public void DeleteTransition(EnemyTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("删除转换条件的时候, 转换条件:[" + trans + "]不存在"); return; } mMap.Remove(trans); }
/** 删除转换条件 */ public void DeleteTransition(EnemyTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("EnemyState Error: [删除] 转换条件" + trans + "不存在"); return; } mMap.Remove(trans); }
/** 根据转换条件获取状态ID */ public EnemyStateID GetOutPutState(EnemyTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("EnemyState Error: [获取] 转换条件" + trans + "不存在"); return(EnemyStateID.NullState); } return(mMap[trans]); }
public EnemyStateID GetOutputState(EnemyTransition trans) { // Check if the map has this transition if (map.ContainsKey(trans)) { return(map[trans]); } return(EnemyStateID.NullStateID); }
public EnemyStateID getOutPutState(EnemyTransition trans) { if (!map.ContainsKey(trans)) { Debug.LogError("can't find this trans"); return(EnemyStateID.NullState); } return(map[trans]); }
public void deleteTransition(EnemyTransition trans) { if (!map.ContainsKey(trans)) { Debug.LogError("trans not exist"); return; } map.Remove(trans); }
public EnemyStateID GetOutputState(EnemyTransition trans) { if (mMap.ContainsKey(trans) == false) { return(EnemyStateID.NullState); } return(mMap[trans]); }
public void DeleteTransition(EnemyTransition trans, EnemyStateID id) { if (!map.ContainsKey(trans)) { Debug.Log("EnemyState StateID:" + StateID + " Error :" + trans + "不存在,无法删除"); return; } map.Remove(trans); }
/// <summary> /// 根据指定的转换条件获取状态ID /// </summary> /// <param name="transition"></param> /// <returns></returns> public EnemyStateID GetOutPutState(EnemyTransition transition) { if (!m_Map.ContainsKey(transition)) { Debug.LogError("获取转换条件失败,不存在该条件 : " + transition.ToString()); return(EnemyStateID.NullState); } return(m_Map[transition]); }
//删除状态转换键值对 public void DeleteTransition(EnemyTransition trans) { if (map.ContainsKey(trans)) { map.Remove(trans); return; } Debug.LogError("转换条件不存在"); }
public EnemyStateID GetIDByTransition(EnemyTransition trans) { EnemyStateID id = EnemyStateID.NullState; if (!map.TryGetValue(trans, out id)) { Debug.Log("EnemyState StateID:" + StateID + " Error :" + trans + "不存在,无法查找"); } return(id); }
//判断当前转换条件下是否能进行状态的转换 public EnemyStateID GetOutPutState(EnemyTransition trans) { if (mMap.ContainsKey(trans) == false)//不能进行状态转换 { return(EnemyStateID.NullState); } else//需要进行状态转换 { return(mMap[trans]); } }
public void DeleteTransition(EnemyTransition trans) { if (map.ContainsKey(trans) == false) { Debug.LogError("ɾ��ת������������" + trans); } else { map.Remove(trans); } }
public EnemyStateID GetOutPutState(EnemyTransition trans) { if (!mMap.ContainsKey(trans)) { Debug.LogError(":[" + trans + "]不存在!"); return(EnemyStateID.NullState); } return(mMap[trans]); }
public EnemyStateID GetOutputState(EnemyTransition trans) { EnemyStateID id = EnemyStateID.NullState; if (mMap.ContainsKey(trans)) { //mMap.TryGetValue(trans, out id); id = mMap[trans]; } return(id); }
public EnemyStateID GetOutPutState(EnemyTransition trans) { if (map.ContainsKey(trans) == false) { //Debug.LogError("ɾ��ת������������" + trans); return(EnemyStateID.NullState); } else { return(map[trans]); } }
public void AddTransition(EnemyTransition trans, EnemyStateID id) { if (trans == EnemyTransition.NullTansition) { Debug.LogError("EnemyState Error: trans不能为空"); return; } if (id == EnemyStateID.NullState) { Debug.LogError("EnemyState Error: 状态ID不能为空"); return; } if (mMap.ContainsKey(trans)) { Debug.LogError("EnemyState Error: " + trans + " 已经添加上了"); return; } mMap.Add(trans, id); }
public void AddTransition(EnemyTransition trans, EnemyStateID id) { if (trans == EnemyTransition.NullTansition) { return; } if (id == EnemyStateID.NullState) { return; } if (mMap.ContainsKey(trans)) { return; } mMap.Add(trans, id); }