这里状态机有两个部分组成,一个是管理各种状态的状态机,一个是各种状态本身。

状态机对外有两个接口,一个是添加状态,一个是切换状态。我们给一个对象用状态机管理,首先就给它的状态机添加各种状态,然后启动状态机就OK了,里面不同的状态都会在各种时候自己切换到别的状态。

状态本身主要有四个功能,首先保存自己收哪个状态机控制的引用,然后进入状态(用方法做)、退出状态(用方法做)、运行状态(用携程做)这三个过程对应的函数。运行状态里面会对不同情况作出处理,转换到其他的状态。

状态机是一种十分优秀的设计,适用范围十分广泛。能使思维变得十分清晰,代码结构也很规范简单。

我一开始学状态机,感觉这个玩意儿使用范围很小。也就适用于处理一下怪物的AI。

但是今天的学习让我打开了新世界的大门,状态机使用范围是十分广泛的。

它可以处理玩家操控的人物的状态,它可以处理UI之间的管理。对于复杂的逻辑,像战斗系统,我也可以用状态机来处理。

比如我有这样的一个战斗流程。首先,玩家和怪物都准备好。然后每隔一秒,玩家和怪物轮流攻击。直到一方的血量为0。如果是怪物血量为0,那么人物会获得奖励,然后刷新怪物,继续战斗。如果是玩家血量为0,那么玩家就会进入5秒虚弱状态,虚弱状态结束后,玩家才会恢复血量,然后刷新怪物,继续开始战斗。

对于以上这个战斗流程,我们可以抽象成几个状态,每种状态中都有自己的逻辑来转移到其他的状态。一旦我将状态机开启,那么我人物就会按照这么一个流程战斗下去。当我有新的需求的时候,我只需要在不同的状态中修改代码。或者我新加入一些别的状态就好。

就这样,状态机就是如此好用。

Unity 火炬之光 笔记(二)状态机的基本设计相关推荐

  1. Unity 火炬之光 笔记(一)角色系统介绍

    这个教程中,着重使用Unity所推崇的组件系统,让一个GameObject挂载不同的组件来实现丰富的GameObject的表现. 现在介绍角色系统. 角色GameObject有以上的组件挂载. 角色控 ...

  2. Unity学习笔记(二) 碰撞检测与触发检测

    正好看到了Roll a ball这个游戏,于是就温故一下碰撞检测和触发检测 1.前期准备 中间省去建造一些基础的物体的过程,最后呈现如下图 我们的主角就是中间的球体 其GameObject名为play ...

  3. 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    [Unity学习笔记]b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别) 自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难 ...

  4. 趣谈网络协议笔记-二(第十一讲)

    趣谈网络协议笔记-二(第十一讲) TCP协议(上):因性恶而复杂,先恶后善反轻松 自勉 我似乎天性不擅长争斗,但是有些时候,我也必须砥砺前行. 强大是和平的前提,而善良不是. 前言 今天回到家里已经是 ...

  5. pythonsze_python学习笔记二 数据类型(基础篇)

    Python基础 对于Python,一切事物都是对象,对象基于类创建 不同类型的类可以创造出字符串,数字,列表这样的对象,比如"koka".24.['北京', '上海', '深圳' ...

  6. 3D游戏设计读书笔记二

    3D游戏设计读书笔记二 一.简答题 • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系.   GameObjects是一个具体的实例,Assets是包括诸多游戏素材的资 ...

  7. Unity 入门笔记 - 02 - 各种动画

    Unity 入门笔记 - 02 - 各种动画 前言:上一篇笔记记录了从零开始安装软件,到搭建最基本的游戏场景和角色,最后开始接触了脚本代码.对unity游戏引擎的工作方式有了基本的认知.接下来开始进一 ...

  8. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

  9. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  10. Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档

    Unity学习笔记:个人学习项目<疯狂天才埃德加>纠错文档 本文档是完成学校Unity课程作业时建立的纠错文档.用于记录自己开发过程中遇到的各种问题,以便下次遇到相同的问题时及时找到解决方 ...

最新文章

  1. jqury-zoom的一个例子
  2. 数学建模第三节2020.4.17-5.3补
  3. Hibernate - DetachedCriteria 的完整用法
  4. .Net Core 读取文件时中文乱码问题的解决方法
  5. Install Docker Mac OS X
  6. linux下I2C驱动架构全面分析
  7. python编辑七段数码管引脚图_初识原理图
  8. cstring和string头文件
  9. 毕业设计2- MPU6050传感器调试记录(STM32CubeMX+STM32F103C8T6)
  10. 基于wincc的虚拟电梯设计_PLC基于WinCC的四层电梯监控系统设计+梯形图
  11. 2022年计算机二级考试Access数据库程序设计冲刺题及答案
  12. Xpath根据text内容快速定位
  13. 武汉科技大学计算机专业怎样,武汉科技大学计算机专业就业情况如何
  14. 实现搜索框(含历史搜索记录)
  15. html自动验证邮件地址格式,JavaScript表单验证和邮箱格式验证的方法
  16. 1-3 5-7的c语言程序,C语言求1-1/3+1/5-1/7+...——小程序,大道理
  17. [PyTorch]——DataLoader Num_workers
  18. BP神经网络原理及Matlab实现(Back Propagation Neural Networks,BPNN)
  19. CISA国际注册信息系统审计师认证
  20. led指示灯识别功能

热门文章

  1. 分享23种追女生的方式,教你同时把追MM和设计模式融汇贯通(上)
  2. 几种LDO带载能力测试
  3. 上海市东海大桥10万千瓦风电场
  4. 2021-02-26-CKA-题库-反复反复反复练习
  5. PTA'S C++ 与刚哥的中路对狙(不是病毒的病毒)
  6. RK3288 -- 关于 HDMI 音频输出的两种配置
  7. opencv连续读取文件夹下的图片(python)
  8. iOS开发日记15-强制弹出系统键盘(禁用搜狗键盘)
  9. 【采购】SAP条件类型和VOFM完成采购订单定价增强
  10. 【合规性检查-Fitness】基于Token重演的拟合度评估方法