修改fsm

This commit is contained in:
2025-04-10 11:20:22 +08:00
parent 12f86c6eac
commit e3afd4acac
16 changed files with 229 additions and 403 deletions

View File

@@ -4,84 +4,28 @@ using UnityEngine;
namespace Stary.Evo.FiniteStateMachine
{
public interface IState
public interface IFSMIState
{
public FSMController Machine { get; set; }
IFSMManager FsmManager { get; }
string Name { get; }
public void OnEnter();
public void OnExit();
public void Update();
public void FixedUpdate();
public void OnInit();
public void OnDestory();
}
public abstract class AbstractState : IState
public abstract class AbstractState : IFSMIState
{
public FSMController Machine { get; set; }
public IFSMManager FsmManager { get; }
public string Name { get; }
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();
}
}
}