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

posted @ 2020-12-03 14:48  低小调  阅读(207)  评论(0编辑  收藏  举报