This commit is contained in:
Han
2025-03-21 18:34:26 +08:00
parent 63b6601fbe
commit 93531fdabf
10 changed files with 516 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
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();
}
}