unity3D FSM有限状态机(状态设计模式)

前言

为了解决游戏过于麻烦的状态转换(人物动画过多),使用有限状态机。
缺点:代码量大

编写
  1. 使用多态和Switch
  2. new(状态设计模式)
类的介绍

PlyayCtrl:挂载在角色身上的脚本,用来控制状态机,(控制状态机中状态的切换)。
Machine:状态机器类,储存所有状态,对状态进行切换,和状态的保持工作。
Base: 状态的基类,给子类提供接口(方法)
Template:泛型类当前状态的拥有者
Idle Run Attack …等各个具体状态的实现(播放动画)
1

各个类的关系图介绍

状态模式

脚本代码

1.状态基类

/// <summary>
/// 状态的基础类:给子类提供方法
/// </summary>
/// 
public class StateBase {

    //给每个状态设置一个ID
    public int ID{
  get;set;}

    //被当前机器所控制
    public StateMachine machine;

    public StateBase(int id)
    {
        this.ID = id;
    }

    //给子类提供方法
    public virtual void OnEnter(params object[] args){}
    public virtual void OnStay(params object[] args){}
    public virtual void OnExit(params object[] args){}

}

2.状态拥有者类(泛型类)

/// <summary>
/// 状态拥有者
///
  • 21
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值