示例#1
0
        private void OnGUI()
        {
            if (GUILayout.Button("ChangeState StateOne"))
            {
                m_IFSM.ChangeState <StateOne>();
            }

            if (GUILayout.Button("ChangeState StateTwo"))
            {
                m_IFSM.ChangeState <StateTwo>();
            }

            if (GUILayout.Button("Update Condition State"))
            {
                m_IFSM.GetCondition <ConditionTwo>().UpdateState <StateTwo>();
            }
        }
示例#2
0
 /// <summary>
 ///状态检测事件;
 /// </summary>
 public virtual void Reason(IFSM <T> fsm)
 {
     for (int i = 0; i < triggerList.Count; i++)
     {
         if (triggerList[i].Handler(fsm))
         {
             fsm.ChangeState(GetTriggeredState(triggerList[i]).GetType());
             return;
         }
     }
 }
示例#3
0
        public void ChangeState <TState>(IFSM <T> fsm) where TState : IState <T>
        {
            IFSM <T> fsmImplement = (IFSM <T>)fsm;

            if (fsmImplement == null)
            {
                return;
            }

            fsmImplement.ChangeState <TState>();
        }
示例#4
0
        private void Start()
        {
            //  yield return new WaitForSeconds(2f);

            m_FSMManager = GameBox.GetComponent <FSMComponent>(); //获取状态机管家组件
            m_IFSM       = m_FSMManager.CreateFSM("Demo");        //创建一个状态机
            m_IFSM.AddState <StateOne>();
            m_IFSM.AddState(typeof(StateTwo));
            m_IFSM.AddCondition <ConditionOne>();
            m_IFSM.AddCondition <ConditionTwo>();
            m_IFSM.ChangeState <StateOne>(); //初始状态
        }
示例#5
0
        public void ChangeState(IFSM <T> fsm, Type stateType)
        {
            IFSM <T> fsmImplement = fsm;

            if (fsmImplement == null)
            {
                return;
            }

            if (stateType == null)
            {
                return;
            }

            if (!typeof(IState <T>).IsAssignableFrom(stateType))
            {
                return;
            }

            fsmImplement.ChangeState(stateType);
        }
示例#6
0
 /// <summary>
 /// Triggers a state change in this instance
 /// </summary>
 /// <typeparam name="T">state to change to</typeparam>
 public void ChangeState <T>() where T : IState
 {
     _fsm.ChangeState <T>();
 }
示例#7
0
 /// <summary>
 /// 改变流程
 /// </summary>
 /// <typeparam name="T">流程的类型</typeparam>
 public void ChangeProcedure <T>() where T : BaseProcedure
 {
     m_ProcedureOwner.ChangeState <T>();
 }
 /// <summary>
 /// 切换当前过程状态。
 /// </summary>
 /// <typeparam name="TProcedure">要切换到的有限状态机状态类型。</typeparam>
 public void ChangeProcedure <TProcedure>() where TProcedure : ProcedureBase
 {
     m_ProcedureFSM.ChangeState <TProcedure>();
 }