public void DeleteTransition(CitizenTransition trans) { if (mMap.ContainsKey(trans) == false) { Debug.LogError("删除转换条件的时候, 转换条件:[" + trans + "]不存在"); return; } mMap.Remove(trans); }
public CitizenStateID GetOutPutState(CitizenTransition trans) { if (mMap.ContainsKey(trans) == false) { return(CitizenStateID.NullState); } else { return(mMap[trans]); } }
public void AddTransition(CitizenTransition trans, CitizenStateID id) { if (trans == CitizenTransition.NullTransition) { Debug.LogError("CitizenrState Error: trans不能为空"); return; } if (id == CitizenStateID.NullState) { Debug.LogError("CitizenrState Error: 状态ID不能为空"); return; } if (mMap.ContainsKey(trans)) { Debug.LogError("CitizenrState Error: " + trans + " 已经添加上了"); return; } mMap.Add(trans, id); }
public void PerformTransition(CitizenTransition trans) { if (trans == CitizenTransition.NullTransition) { Debug.LogError("要执行的转换条件为空:" + trans); return; } CitizenStateID nextStateID = mCurrentState.GetOutPutState(trans); if (nextStateID == CitizenStateID.NullState) { Debug.LogError("在转换条件[" + trans + "]下,没有对应的转换状态"); return; } foreach (ICitizenState s in mStates) { if (s.stateID == nextStateID) { mCurrentState.DoBeforeLeaving(); mCurrentState = s; mCurrentState.DoBeforeEntering(); return; } } }