FSM

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();
        }
    }
}


猜你喜欢

转载自blog.csdn.net/qq_41579634/article/details/80372653
FSM