void ABC(eStateID stateID) { if (stateID == eStateID.Attack2) { Debug.Log("666"); } Debug.Log("HAHHAHAHHAHHAHA--->" + stateID); }
public void AddTransition(eTransition _trans, eStateID _id) { if (StateDic.ContainsKey(_trans)) { return; } StateDic.Add(_trans, _id); }
//增加Transition(對應的TransitionID,要去的StateID) public void AddTransition(eTransitionID tID, eStateID sID){ //不處理 if(tID == eTransitionID.None || sID == eStateID.None){ return; } //m_StateMap是否包含TransitionID,是就不處理 if(m_StateMap.ContainsKey(tID)){ return; } m_StateMap.Add(tID, sID); }
public virtual void PerformTransition(eTransition trans) { Debug.Log("CurState " + CurState.name); eStateID id = CurState.GetStateIDByTrans(trans); if (id == eStateID.Null) { Debug.LogError("ERROR: CurrentState " + CurStateID + " TargetState " + id + " Transition " + trans); return; } CurStateID = id; foreach (var state in stateList) { if (state.StateID == CurStateID) { CurState.OnExit(); CurState.OnExit(out object dataNext); CurState = state; CurState.OnEnter(); CurState.OnEnter(in dataNext); CurState.OnAction(); } } }
//做State的切換 public void PerformTransition(eTransitionID tID, AIData data){ if(tID == eTransitionID.None){ return; } eStateID sID = m_currentState.GetOutputStateID (tID); if (sID == eStateID.None) { return; } m_currentStateID = sID; int iCount = m_State.Count; for (int i = 0; i < iCount; i++) { if (m_State [i].m_StateID == m_currentStateID) { m_currentState.DoBeforeLeave (data); m_currentState = m_State [i]; m_currentState.DoBeforeEnter (data); break; } } }
public void DeleteState(eStateID sID){ if (sID == eStateID.None) { return; } int iCount = m_State.Count; for (int i = 0; i < iCount; i++) { if(m_State[i].m_StateID == sID){ m_State.RemoveAt(i); return; } } }
public void AddState(FSMBaseState state){ if (state == null) { return; } //如果是空的就直接加 int iCount = m_State.Count; if (iCount == 0) { m_State.Add (state); m_currentState = state; m_currentStateID = state.m_StateID; return; } //檢查有無重複 for (int i = 0; i < iCount; i++) { if(m_State[i].m_StateID == state.m_StateID){ return; } } m_State.Add (state); }