/// <summary> /// 切换状态 /// </summary> public void SwitchState <T>() where T : FiniteState { if (_stateInstances.ContainsKey(typeof(T))) { if (_currentState == _stateInstances[typeof(T)]) { return; } if (_currentState != null) { _currentState.OnLeave(); } _currentState = _stateInstances[typeof(T)]; _currentState.OnEnter(); } else { GlobalTools.LogError("切换状态失败:有限状态机 " + Name + " 不存在状态 " + typeof(T).Name + "!"); } }
/// <summary> /// 切换状态 /// </summary> /// <param name="type">状态类型</param> public void SwitchState(Type type) { if (_stateInstances.ContainsKey(type)) { if (_currentState == _stateInstances[type]) { return; } if (_currentState != null) { _currentState.OnLeave(); } _currentState = _stateInstances[type]; _currentState.OnEnter(); } else { GlobalTools.LogError(string.Format("切换状态失败:有限状态机 {0} 不存在状态 {1}!", Name, type.Name)); } }