/// <summary> /// 构造函数初始化 /// </summary> /// <param name="beginState"></param> public VStateMachince(VStateBase beginState) { m_states = new SortedList <int, VStateBase>(); m_curState = beginState; RegState(CurState); CurState.Enter(); }
protected void Init() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); List <VStateBase> takes = new List <VStateBase>(); object[] parms = new object[1]; parms[0] = this; foreach (var item in types) { if (typeof(T) == item.BaseType) { VStateBase t = Activator.CreateInstance(item, parms) as VStateBase; if (t.ID == 0) { m_SM = new VStateMachince(t); } else { takes.Add(t); } } } foreach (var item in takes) { m_SM.RegState(item); } }
/// <summary> /// 注册 /// </summary> /// <param name="state"></param> public void RegState(VStateBase state) { int id = (int)(state.ID); if (m_states.ContainsKey(id)) { Debug.Log(id + "已存在!"); return; } m_states.Add(id, state); state.Machine = this; }
/// <summary> /// 设置新的状态 /// </summary> /// <param name="id">目标ID</param> /// <param name="args"></param> public void TranslateToState(int id) { int nId = (int)id; if (!m_states.ContainsKey(nId)) { //Debug.Log("VStateMachine, 切换状态时没有找到目标状态"+ id.ToString()); VMessageOut._instance.OutMessage("VStateMachine, 切换状态时没有找到目标状态" + id.ToString()); return; } m_curState.Exit(); m_curState = m_states[nId]; m_curState.Enter(); }