using System.Collections; using System.Collections.Generic; using UnityEngine; //public enum PlayerState //{ // idle, // run, // die, // attack, // skill //} public abstract class FSMState { //当前的状态ID public int StateID; //状态拥有者 //mono.GetComponent<Animator>().SetBool("IsRun",false); public MonoBehaviour mono; //状态所属管理器 public FSMManager fsmManager; public FSMState(int stateID, MonoBehaviour mono, FSMManager manager) { this.StateID = stateID; this.mono = mono; this.fsmManager = manager; } public abstract void OnEnter(); public abstract void OnUpdate(); }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class FSMManager { //状态列表 public List<FSMState> stateList = new List<FSMState>(); //当前状态 public int CurrentIndex = -1; //改变状态 public void ChangeState(int StateID) { CurrentIndex = StateID; stateList[CurrentIndex].OnEnter(); } //更新方法 public void Update() { if (CurrentIndex!=-1) { stateList[CurrentIndex].OnUpdate(); } } }