public void SwitchState(System.Enum stateName) { if (CurState.TranslationDict.ContainsKey(stateName) && stateDic.ContainsKey(stateName)) { CurState.ExitState(); System.Action callback = CurState.TranslationDict[stateName].translationCallBack; CurState = stateDic[stateName]; CurState.EnterState(); if (callback != null) { callback(); } } }