/// <summary>
 ///  Change State
 /// </summary>
 /// <param name="newState">the target state</param>
 /// <param name="transition">the transition method</param>
 /// <param name="enterDuration">the enter duration</param>
 /// <param name="exitDuration">the exit durtation</param>
 public void ChangeState(T newState, StateTransition transition, float enterDuration, float exitDuration)
 {
     _initNotifyer.DoOnCompleted(() =>
     {
         ChangeStateInternal(newState, transition, enterDuration, exitDuration);
     }).Subscribe();
 }