using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public interface IState
{
public FSMController Machine { get; set; }
public void OnEnter();
public void OnExit();
public void Update();
public void FixedUpdate();
public void OnInit();
public void OnDestory();
}
public abstract class AbstractState : IState
{
public FSMController Machine { get; set; }
public abstract void OnEnter();
public abstract void OnExit();
public abstract void Update();
public abstract void FixedUpdate();
public abstract void OnInit();
public abstract void OnDestory();
}
///
/// 状态中具体行为:
/// (OnInitAction:初始化)
/// (OnEnterAction:进入)
/// (UpdateAction:循环)
/// (FixedUpdateAction:后循环)
/// (OnExitAction:离开)
/// (OnDestoryAction:销毁)
///
public struct StateDateAction
{
public System.Action OnEnterAction;
public System.Action OnExitAction;
public System.Action UpdateAction;
public System.Action FixedUpdateAction;
public System.Action OnInitAction;
public System.Action OnDestoryAction;
}
///
/// 单个状态
///
public class SingleState : AbstractState
{
public StateDateAction stateDate;
public bool IsRunning;
public override void FixedUpdate()
{
stateDate.FixedUpdateAction?.Invoke();
}
public override void OnDestory()
{
stateDate.OnDestoryAction?.Invoke();
}
public override void OnEnter()
{
stateDate.OnEnterAction?.Invoke();
}
public override void OnExit()
{
stateDate.OnExitAction?.Invoke();
}
public override void OnInit()
{
stateDate.OnInitAction?.Invoke();
}
public override void Update()
{
stateDate.UpdateAction?.Invoke();
}
}