Files
plugin-library/Assets/03.FiniteStateMachine/RunTime/IState.cs
2025-03-21 18:34:26 +08:00

85 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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>
/// 状态中具体行为:
/// OnInitAction初始化
/// OnEnterAction进入
/// UpdateAction循环
/// FixedUpdateAction后循环
/// OnExitAction离开
/// OnDestoryAction销毁
/// </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>
/// 单个状态
/// </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();
}
}