Unity关于状态机实现方案
背景
在开发过程中,有些动画状态,或者人物状态等需要每个状态达到可控的目的。传统的DoTween 虽然可以实现效果,但是可控性很差,此时用到动画状态机。侦听每种动画状态,并在相应状态添加触发事件,完成运行方案。
核心代码
using System.Collections.Generic;
namespace Behaviac
{
//状态机驱动方法[每个状态需要继承]
public interface IStateCore
{
string Name { get; }
void OnEnter();
Result Update(float deltaTime);
void OnLeave();
}
//状态机数据管理操作[主要操作各个状态机分支]
public abstract class Node
{
public abstract Result Update(float deltaTime);
public virtual void OnDestroy()
{
}
}
public enum Result
{
Idle, //初始化的状态,不能作为Invoke的返回值
Success,
Running,
Failure
}
}
演示视频链接:
https://live.csdn.net/v/120108
其中有每种状态下,统一继承的接口,以及管理各个动画状态的抽象类,分别继承,完成扩展方案。
需要者,自取Demo_012
链接:https://pan.baidu.com/s/1CP4FLttldNHW-gW2zUrlDA
提取码:ncv6