public virtual void FixedUpdate()
 {
     for (int i = 0; i < m_states.Count; i++)
     {
         ISMState <T> state = m_states[i];
         if (state.mStateFlag == ISMStateBase.StateFlag.Executing)
         {
             if (state.IsPause() == false)
             {
                 state.FixedExecute();
             }
         }
     }
 }
    public virtual void Update()
    {
        for (int i = 0; i < m_states.Count; i++)
        {
            ISMState <T> state = m_states[i];
            if (state.mStateFlag == ISMStateBase.StateFlag.Executing)
            {
                if (state.IsPause() == false)
                {
                    state.Execute();
                }
            }

            if (state.mStateFlag == ISMStateBase.StateFlag.BeforeExit)
            {
                Remove(state);

                state.Exit();
            }
        }
    }