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

2023-11-10 14:59

本文主要是介绍Unity 火炬之光 笔记(二)状态机的基本设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

 

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

 

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

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

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

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

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

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

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

  

这篇关于Unity 火炬之光 笔记(二)状态机的基本设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/383428

相关文章

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学