Ejemplo n.º 1
0
        /// <summary>
        /// 如果要判断为同一状态,不进行切换,调用,true 判断,false 不判断
        /// </summary>
        /// <param name="nextState"></param>
        /// <param name="ignor">是否判断为同一状态</param>
        /// <returns></returns>
        public virtual bool ChangeState(MState <T> nextState, bool isSame)
        {
            if (LockCurrentState)
            {
                return(false);
            }

            if (nextState == null)
            {
                Debug.Log("State Machine ===>  nextState is null State");
                return(false);
            }
            //if (CurrenState == null)
            //{ }

            if (isSame && nextState.Name == CurrenState.Name)
            {
                //Debug.Log(CurrenState.Name + "    <<=======>>   " + nextState.Name);
                return(false);
            }

            previousState = (CurrenState == null) ? nextState : CurrenState;
            CurrenState.Exit();
            //Debug.Log("_currenState = " + _currenState.Name);
            //Debug.Log("nextState = " + _currenState.Name);
            CurrenState = nextState;
            CurrenState.Enter();
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 初始化状态机,供外部创建状态机时调用
        /// </summary>
        /// <param name="gameObject"></param>
        public virtual void CreateSM(T controller)
        {
            MState <T> startState = new nullMState <T>();

            CurrenState     = startState;
            previousState   = startState;
            this.controller = controller;
            initial(Controller);
        }
Ejemplo n.º 3
0
 public void SetGolbalState(MState <T> state)
 {
     if (golbalState != null)
     {
         golbalState.Exit();
     }
     golbalState = state;
     if (golbalState != null)
     {
         golbalState.Enter();
     }
 }
Ejemplo n.º 4
0
        //增加,减少状态
        protected bool addState(MState <T> state)
        {
            if (map.ContainsKey(state.Name))
            {
                //Debug.Log(state.Name + "is already exist");
                return(false);
            }


            map.Add(state.Name, state);
            return(true);
        }
Ejemplo n.º 5
0
        public bool AddState(MState <T> state, T controller)
        {
            if (this.controller == null)
            {
                Debug.Log("未初始化controller");
                return(false);
            }

            if (map.ContainsKey(state.Name))
            {
                //Debug.Log(state.Name + "is already exist");
                return(false);
            }

            if (state.StateMachine == null)
            {
                state.CreateState(controller, this);
            }

            map.Add(state.Name, state);
            return(true);
        }
Ejemplo n.º 6
0
 public virtual bool ChangeState(MState <T> nextState)
 {
     return(ChangeState(nextState, false));
 }
Ejemplo n.º 7
0
 protected bool delete(MState <T> state)
 {
     return(this.Delete(state.Name));
 }
Ejemplo n.º 8
0
        public bool isInState(MState <T> State)
        {
            //Debug.Log(State.Name + "<===>  " + _currenState.Name);

            return(State.Name.Equals(CurrenState.Name) ? true : false);
        }