状态机工具1.0.1
This commit is contained in:
87
Assets/03.FiniteStateMachine/RunTime/Abstract/IState.cs
Normal file
87
Assets/03.FiniteStateMachine/RunTime/Abstract/IState.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Stary.Evo.FiniteStateMachine
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/03.FiniteStateMachine/RunTime/Abstract/IState.cs.meta
Normal file
11
Assets/03.FiniteStateMachine/RunTime/Abstract/IState.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a115cd1615ea994493a6950339d2f1e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user