Unity 有限状态机(FSM)的框架结构

本文介绍了Unity中有限状态机(FSM)的设计与实现,对比了Switch Case的使用,并详细阐述了状态模式的概念、优缺点及适用场景。通过示例展示了如何创建接口IState、基础状态类以及状态切换的管理,提供了一个简单的有限状态机框架,鼓励读者根据需求进一步完善功能。
摘要由CSDN通过智能技术生成

前言

NPC是游戏中很重要的一部分,功能复杂,行为智能的NPC可以给玩家带来更加优秀的游戏体验,我们可以通过对NPC的行为模式的设计来理解有限状态机

而对于游戏开发者而言,要实现一个功能完备,逻辑清晰的AI状态图可不是一件简单的事情,如果没有前期的完备的设计,以及正确的编程方法,会在开发过程中产生很多难以解决的问题

一,Switch Case的使用:

在游戏开发过程中,你想要实现一个NPC的一些功能,比如静止与攻击,当玩家靠近NPCNPC就会攻击玩家,编写一段逻辑代码来实现这样的一个效果:

if(玩家靠近)
   NPC攻击玩家代码
if(玩家远离)
   NPC静止代码

NPC行为状态比较简单时,我们可以通过if判断来实现这样的效果


但是当NPC的状态增加时呢,比如说有静止、攻击、追击、巡逻这些状态时呢,我们所有逻辑在使用if else实现这样的转换就会使得逻辑变得很难理解,这个时候就可以使用Switch case配合枚举 来进行状态的转化:

public enum State
{
   
    idle,
    patrol,
    attact,
    pursuit,

}


public class FishRod : MonoBehaviour
{
   

    State state=new State();

    public void Test()
    {
   
        switch (state)
        {
   
            case State.idle:
                //idle状态下的NPC逻辑代码
                break;
            case State.patrol:
                //巡逻状态下NPC逻辑代码
                break;
            case State.attact:
                //攻击状态下的NPC逻辑代码
                break;
            case State.pursuit:
                //追击状态下的NPC逻辑代码
                break;
           
        }
    }


}

很明显,这样逻辑就会清晰很多,只需要在不同状态下修改state对应的枚举类型即可,这样可以将判断代码与执行代码进行分离

通过Switch case结合枚举可以很好的处理NPC行为状态的逻辑

  • 16
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心之凌儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值