FSM有限状态机的使用

FSM

F(finite):有限的
S(state):状态
M(Machine):机械
FSM(有限状态机):指在任意时刻都处于有限状态集合中的某一状态

  1. 我们在wiki.unity3d.com中搜索state


选择第二个,17kb大小的。打开以后,上边是源码,下边是案例。

  1. 我们复制上边的源码到我们的项目中,根据不同的需求,开始编写我们所需要的状态

  2. FSMState类:这个类表示有限状态系统中的状态。每个状态都有一个字典,其中有对(转换状态),显示如果一个转换被触发,而这个状态是当前状态,那么FSM应该是哪个状态。方法原因用于确定应该触发哪个转换。方法行为具有执行NPC在此状态下应该执行的操作的代码
    ①void AddTransition(Transition trans, StateID id):添加过渡
    ②void DeleteTransition(Transition trans):此方法从此状态映射中删除对转换状态。如果转换不在状态映射中,则打印一条错误消息
    ③StateID GetOutputState(Transition trans):如果该状态接收到一个转换,则此方法返回FSM的新状态
    ④:public virtual void DoBeforeEntering() { }:此方法用于在进入状态状态之前设置状态状态。在分配它之前,FSMSystem类会自动调用它到当前状态。
    ⑤:public virtual void DoBeforeLeaving() { }:此方法用于进行任何必要的操作,如重新设置变量在FSMSystem切换到另一个系统之前。它被自动调用通过FSMSystem切换到新的状态之前。
    ⑥:public virtual void Reason() { }:此方法决定状态是否应转换到其列表中的另一个状态NPC是这个类控制的对象的引用
    ⑦:public virtual void Act() { }:这个方法控制NPC在游戏世界中的行为。NPC做的每一个动作、动作或交流都应该放在这里NPC是这个类控制的对象的引用

  3. FSMSystem类:FSMSystem类表示有限状态机类。它有一个列表,其中包含NPC拥有的状态以及添加、删除状态和更改机器当前状态的方法
    ①public void AddState(FSMState s, Ctrl ctrl):此方法将新状态放置在FSM中,如果状态已经在列表中,则打印错误消息。第一个添加的状态也是初始状态。
    ②public void DeleteState(StateID id):如果状态存在,此方法将从FSM列表中删除该状态;如果状态不在列表中,则打印错误消息
    ③public void PerformTransition(Transition trans):此方法尝试根据当前状态和传递的转换更改FSM所处的状态。如果当前状态没有传递的转换的目标状态,则打印一条错误消息。

我们将需要的状态,添加到StateID枚举中,有可能发生的转换添加到Transition枚举中
例:我们有:MenuState、PlayState、PauseState、GameOverState等,这些类都需要继承自FSMState
我们在Awake()方法中:设置其对应的StateID,添加有可能发生的过渡转换。切换到当前状态之前需要的操作都实现在它父类的虚方法DoBeforeEntering() 中,当前状态离开之前需要的操作实现在DoBeforeLeaving() 中。
在我们程序初始化运行时,先初始化我们的各种状态,添加到集合中,并且设置默认的状态。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有限状态机FSM)是一个数学模型,用于描述具有有限数量状态的系统的行为。FSM有三个主要组成部分:状态集合、输入集合和状态转换函数。 首先,有限状态机由一组离散的状态组成。状态是系统在特定时间点的情况的表示,可以是一个特定的变量或属性。例如,一个交通信号灯可以有三种状态:红灯、黄灯和绿灯。 其次,有限状态机还包括输入集合,可以触发状态之间的转换。输入可以是外部条件,例如一个按钮的按下、一个传感器的数据或一个特定的事件。例如,在交通信号灯的情况下,按下按钮可能是一个输入,将状态从红灯转换到绿灯。 最后,有限状态机还包括状态转换函数,它指示在给定状态和输入情况下系统应该如何转换到下一个状态。转换可以是确定性的,也可以是非确定性的。在交通信号灯的情况下,状态转换函数可以定义为:当状态是红灯时,如果接收到按钮按下的输入,则将状态转换为绿灯。 通过将这三个组成部分结合起来,我们可以使用有限状态机来描述和计算系统的行为。FSM广泛应用于计算机科学和工程领域,用于模型验证、软件开发、自动控制等领域。 总之,有限状态机是一种简单但强大的数学模型,用于描述具有有限数量状态的系统的行为。它通过状态集合、输入集合和状态转换函数来建模系统,用于解决各种计算和控制问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值