85 lines
1.8 KiB
C#
85 lines
1.8 KiB
C#
|
|
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();
|
|||
|
|
}
|
|||
|
|
}
|