Files
plugin-library/Assets/03.FiniteStateMachine/RunTime/IState.cs

85 lines
1.8 KiB
C#
Raw Normal View History

2025-03-21 18:34:26 +08:00
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();
}
/// <summary>
/// ״̬<D7B4>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
/// <20><>OnInitAction<6F><6E><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
/// <20><>OnEnterAction<6F><6E><EFBFBD><EFBFBD><EFBFBD>
/// <20><>UpdateAction<6F><6E>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>
/// <20><>FixedUpdateAction<6F><6E><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>
/// <20><>OnExitAction<6F><6E><EFBFBD><EFBFBD><EBBFAA>
/// <20><>OnDestoryAction<6F><6E><EFBFBD><EFBFBD><EFBFBD>٣<EFBFBD>
/// </summary>
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;
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>״̬
/// </summary>
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();
}
}