2 Star 7 Fork 1

熊峻玉 / UFSM状态机

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

UFSM状态机

介绍

适合于Unity中使用的状态机,方便为一个MonoBehaviour子类添加状态控制,代码精简,使用简单

简单使用教程

1.控制类继承自FSMBehaviour

public class CubeController : FSMBehaviour<CubeController>

2.定义状态类

//旋转状态
class RotateState : State<CubeController>
{
    public override void OnUpdate(CubeController owner)
    {
        ower.transform.Rotate(Vector3.up*180* Time.deltaTime);
        if (Input.GetKeyDown(KeyCode.X))
        {
            ower.GetComponent<MeshRenderer>().material.color = Random.ColorHSV();
        }
        //也可以重写OnEnter和OnExit方法添加逻辑
    }
}
//旋转状态
class MoveState : State<CubeController>
{
    public override void OnUpdate(CubeController owner)
    {
        ower.transform. Translate(Vector3.forward * Time.deltaTime);
    }
}

3.创建状态对象

RotateState rotateState = new RotateState();
MoveState moveState = new MoveState();

4.添加状态并设置状态切换条件,再设置一个初始状态就可以跑起来了

//下面两行代码添加状态并设置该状态拥有的转换条件
fsm.AddState(rotateState).AddTranstion("ToMove", moveState.GUID);
fsm.AddState(moveState).AddTranstion("ToRotate", rotateState.GUID);
fsm.ChangeState(rotateState.GUID); //设置初始状态

状态转换

fsm.SendMessage("ToMove");

DebugMode

fsm.debugMode = true;

简单演示Demo

./Demo/Demo.unity

空文件

简介

适合于Unity中使用的状态机,方便为一个MonoBehaviour子类添加状态控制,代码精简,使用简单 展开 收起
C#
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/xiongks/ufsm-state-machine.git
git@gitee.com:xiongks/ufsm-state-machine.git
xiongks
ufsm-state-machine
UFSM状态机
master

搜索帮助