using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace Stary.Evo.FiniteStateMachine { public interface IFSMController { void Initialize(); void AddState(IFSMIState state); void RemoveState(IFSMIState state); } public abstract class AbstractFSMController : MonoBehaviour,IFSMController { private IFsmSystem manager; public void Start() { manager = new FsmSystem(); Initialize(); } public void AddState(IFSMIState state) { if (manager != null) { manager.AddState(state); } else { Debug.LogError("FSMManager未初始化!!"); } } public void RemoveState(IFSMIState state) { if (manager != null) { manager.RemoveState(state); } else { Debug.LogError("FSMManager未初始化!!"); } } /// /// FSM在此类中初始化,进行状态的添加等操作 /// public abstract void Initialize(); private void Update() { if (manager != null) { manager.CurState.Update(); } else { Debug.LogError("FSMManager未初始化!!"); } } private void FixedUpdate() { if (manager != null) { manager.CurState.FixedUpdate(); } else { Debug.LogError("FSMManager未初始化!!"); } } private void OnDestroy() { if (manager != null) { foreach (var state in manager. States) { state.Value.OnDestory(); } } else { Debug.LogError("FSMManager未初始化!!"); } } } }