/// <summary> /// 状态切换 /// </summary> /// <param name="id"></param> public void Change(object id, object changeHandleParam = null) { if (id.Equals(cur_StateID)) { return; } else { //1.退出状态 if (cur_State != null) { cur_State.Exit(); } //2.记录新切换的状态 cur_StateID = id; cur_State = getSate(id); //3.进入新状态 cur_State.Enter(); //4.绑定新状态更新内容 OnUpdateHandle = cur_State.update; OnFixedUpdateHandle = cur_State.fixedUpdate; OnLateUpdateHandle = cur_State.lateUpdate; if (onChangeHandle != null && changeHandleParam != null) { onChangeHandle.Invoke(changeHandleParam); } } }
public bool CheckNewState(IStateBase newState) { if (newState != ActualState) { Console.WriteLine($"{GetType()} - State: {newState.GetType().Name} entered"); _t.Stop(); ActualState?.Exit(); newState.Enter(); _t.Start(); ActualState = newState; return(true); } return(false); }
public void ChangeState(IStateBase newState) { if (null == newState) { return; } PreviousState = CurrentState; if (null != CurrentState) { CurrentState.Exit(Owner); } CurrentState = newState; CurrentState.Enter(Owner); }