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

2023-11-10 14:59

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

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

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

 

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

 

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

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

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

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

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

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

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

  

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



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

相关文章

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

详解Java中三种状态机实现方式来优雅消灭 if-else 嵌套

《详解Java中三种状态机实现方式来优雅消灭if-else嵌套》这篇文章主要为大家详细介绍了Java中三种状态机实现方式从而优雅消灭if-else嵌套,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录1. 前言2. 复现传统if-else实现的业务场景问题3. 用状态机模式改造3.1 定义状态接口3