Unity 状态机实例 学习之用

开始的时候想用lua写的 比较简便 代码也有现成的 
但是考虑到还是以学习为主 就把思想转到cs实现一遍 
这篇文章可以认为是对前几天的解决Unity多线程问题中的状态机的一个简单实现


先来看看将要实现的状态机(本人不想画图 喜欢用文字描述 后期修改再说吧。。。)

共 5 种状态

wait

move

attack_a

attack_b

power


将要实现的过程是:

在wait状态下:

可以转到 move 移动(这里有 3 秒的判断时间) 可以转到 attack_a 攻击 或者 attack_b 攻击

move:

可回到wait 可转到attack_a攻击

attack_a状态:

可转到wait

attack_b状态:

可转到power 可转到wait (这里有 3 秒的判断时间)

power状态:

可转到wait


通过以上的信息 应该能够自行画出状态图 至于其中每个状态的动作 在下面的代码中就可以看到


主要代码:
FSMBase.cs
using UnityEngine;
using System.Collections;




public abstract class FSMBase
{


     public abstract void HandleActor(Actor actor);

}
FSMMain.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
//状态
public enum State
{
    WAIT,
    MOVE,
    ATTACK_A,
    ATTACK_B,
    POWER,
}
//动作
public enum Actor
{
    KEY_W,
    MOUSE_LEFT,
    MOUSE_RIGHT,
    WAIT_TIME,
    IMMEDIATELY,
    KEY_SPACE
}




public class FSMMain : MonoBehaviour
{


    public static FSMMain _instance;


    public State currState;
    List<Actor> actorList = new List<Actor>();                          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值