Unity通用有限状态机的从零搭建手册(一):阵前磨枪

这篇具有很好参考价值的文章主要介绍了Unity通用有限状态机的从零搭建手册(一):阵前磨枪。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本文的创作目的是总结工作中累积的经验和成果,并通过写教学文章的方式进行巩固和查漏补缺,在不足之处加以改进,工作时由于时间原因没有实现的一些设计也会借这次机会进行补完。我会在写文章的过程中和读者一起从新开始搭建和优化一个状态机系统以及一个应用案例,希望可以和读者共同学习进步。

章节目录

Unity通用有限状态机的从零搭建手册(一):阵前磨枪
Unity通用有限状态机的从零搭建手册(二):凿地筑基
Unity通用有限状态机的从零搭建手册(三):雏形初见
Unity通用有限状态机的从零搭建手册(四):优化漫漫(1)
Unity通用有限状态机的从零搭建手册(五):优化漫漫(2)
Unity通用有限状态机的从零搭建手册(六):优化漫漫(3)
Unity通用有限状态机的从零搭建手册(七):新的挑战
Unity通用有限状态机的从零搭建手册(八):最终试炼

项目地址
StarryJamFSM

有限状态机简介

有限状态机,英文全程Finate State Machine,定义为“表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型”(来自维基百科)。

先来看一下有限状态机的四个组成要素和三个特征。

四个要素:

现态:指当前所处状态

条件:会触发状态变更的事件

动作:状态迁入、迁出、保持时的行为

次态:条件所对应的目标状态

三个特征:

1. 状态总数有限;

2. 任一时刻只处在一种状态之中;

3. 在条件达成时会从现态转移到对应次态。

总的来说,状态机是一种抽象一个对象的不同状态下的行为和状态之间切换的建模工具,他在软件工程当中被广泛运用。我从事的是游戏开发,在游戏开发的过程中可以很明显地感觉到随着需求的迭代,游戏中的各种角色、AI的逻辑变得越来越复杂,诸如在跳跃时是否能攻击,奔跑时攻击是否和站立攻击方式有所不同,敌人何时开始追击在玩家离开多远之后归位等一系列逻辑,仅靠最简单的if-else语句不但难以将不同状态之间的关系表达清楚,更重要的是在需求变动的时候要改动之前的代码将根本无从下手。在那个时候我就决定给项目中引入有限状态机来给不同的状态以及他们的转换条件做解耦,以便于日后的迭代和维护。当你发现一个类在处理逻辑时明显和当前状态相关,状态之间有明显的界限,且状况复杂时,就该考虑使用有限状态机了。

前期梳理

在开始码代码之前,先梳理一下我们需要构建的几个重要类的职责。

状态机类(FiniteStateMachine):具体类; 负责添加、删除状态,以及状态的更新和转换。

状态类(State):抽象类; 抽象出切入、切出、持续时的行为接口,由子类完成具体的行为逻辑;

条件类(Condition): 抽象类;抽象出条件判断的接口,由子类完成具体的判断逻辑。

了解完几个重要类的职责之后我们就开始着手搭建框架吧!文章来源地址https://www.toymoban.com/news/detail-431155.html

到了这里,关于Unity通用有限状态机的从零搭建手册(一):阵前磨枪的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity进阶开发-FSM有限状态机

    # Unity进阶开发-FSM有限状态机 我们在进行开发时,到了一定程度上,会遇到数十种状态,继续使用Unity的Animator控制器会出现大量的bool,float类型的变量,而这些错综复杂的变量与Animatator控制器如同迷宫版连线相结合会变得极其的复杂且无法良好维护扩展,出现一个BUG会导致

    2024年02月08日
    浏览(45)
  • unity有限状态机和模糊状态机(怪物AI、自动寻路)

    自动寻路步骤: 1、把场景中不同的物体勾选static 2、烘培寻路网格 3、添加NavMeshAgent组件 4、给需要寻路的物体添加脚本 游戏中有限状态机的体现:小怪的巡逻和追逐功能 模糊状态机的体现:当玩家离小怪比较近时,小怪会追逐玩家,当玩家离小怪比较远时小怪会停止追逐玩

    2024年02月04日
    浏览(54)
  • Unity | 渡鸦避难所-6 | 有限状态机控制角色行为逻辑

    有限状态机(英语:finite-state machine,缩写:FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型 在游戏开发中应用有限状态机,能够将复杂的行为逻辑分解为一组简单的状态和转换规则,每个状态都可以独立地处理其逻辑,使代码

    2024年01月16日
    浏览(44)
  • Unity中的AI算法和实现2-有限状态机FSM(上)

    在上一篇文章中, 我们基于 Waypoint 构建了一个最简单的AI怪物, 这个怪物可以在几个点之间巡逻. 本篇文章会在此基础之上, 添加怪物在巡逻过程中发现玩家并追逐玩家, 并且在距离玩家一定距离之后脱离追逐然后继续进行巡逻. 在添加两个状态之前, 我们先介绍什么是 有限状态

    2024年02月01日
    浏览(42)
  • Unity架构师经验分享:基于状态机的逻辑控制

    在Unity中,状态机是一种非常重要的设计模式,它可以帮助开发者更好地管理游戏中的逻辑控制。在本文中,我们将详细解答基于状态机的逻辑控制,帮助Unity架构师进阶。 1. 什么是状态机? 状态机是一种用于描述对象在不同状态之间转换的模型。在游戏开发中,一个对象可

    2024年02月22日
    浏览(44)
  • 人工智能-线性回归的从零开始实现

    在了解线性回归的关键思想之后,我们可以开始通过代码来动手实现线性回归了。 在这一节中,我们将从零开始实现整个方法, 包括数据流水线、模型、损失函数和小批量随机梯度下降优化器。 虽然现代的深度学习框架几乎可以自动化地进行所有这些工作,但从零开始实现

    2024年02月08日
    浏览(53)
  • 机器学习&&深度学习——线性回归的从零开始实现

    虽然现在的深度学习框架几乎可以自动化实现下面的工作,但从零开始实现可以更了解工作原理,方便我们自定义模型、自定义层或自定义损失函数。 根据带有噪声的线性模型构造一个人造数据集。任务是使用这个数据集来恢复模型的参数。我们使用低维数据,可以更容易地

    2024年02月15日
    浏览(40)
  • 机器学习&&深度学习——RNN的从零开始实现与简洁实现

    👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习深度学习——循环神经网络RNN 📚订阅专栏:机器学习深度学习 希望文章对你们有所帮助 我们将在之前所说的《时光机器》数据集上训练,先读取数据集: 回想一下,在train_iter中,每个词

    2024年02月13日
    浏览(44)
  • [C语言][数据结构][链表] 双链表的从零实现!

    目录 零.必备知识 0.1 一级指针 二级指针 0.2 双链表节点的成员列表         a. 数据         b. 后驱指针         c. 前驱指针 0.3 动态内存空间的开辟 一. 双链表的实现与销毁         1.1 节点的定义         1.2 双向链表的初始化 创建新节点         1.3 尾插       

    2024年04月17日
    浏览(245)
  • [C语言][数据结构][链表] 单链表的从零实现!

    目录 零.必备知识 1.一级指针 二级指针 2. 节点的成员列表     a.数据     b.指向下一个节点的指针. 3. 动态内存空间的开辟 (malloc-calloc-realloc) 一.单链表的实现与销毁          1.1 节点的定义         1.2 单链表的尾插         1.3 单链表的头插         1.4 单链表的尾删  

    2024年04月11日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包