UE5中 Character、PlayerController、PlayerState、GameMode和GameState核心类之间的联动和分工·

news2025/3/18 16:53:36

1. GameMode 与 GameState

关系描述
  • GameMode:定义游戏规则和逻辑,控制游戏的开始、进行和结束。
  • GameState:存储和同步全局游戏状态,如得分、时间、胜利条件等。
联动方式
  • GameMode初始化GameStateGameMode在游戏开始时创建GameState实例,并将全局游戏规则和状态信息存储在GameState中。
  • GameMode更新GameStateGameMode根据游戏规则更新GameState中的数据,例如增加得分或触发游戏结束。
  • GameState同步数据GameState将全局状态数据同步到所有客户端,确保所有玩家看到一致的游戏状态。

2. GameMode 与 PlayerController

关系描述
  • GameMode:控制玩家生成和游戏规则。
  • PlayerController:管理玩家输入和交互逻辑。
联动方式
  • PlayerController生成GameMode在玩家加入游戏时生成PlayerController实例,并将其分配给玩家。
  • PlayerController调用GameModePlayerController可以通过GameMode执行游戏规则,例如请求生成角色或触发游戏事件。
  • GameMode控制PlayerControllerGameMode可以禁用或启用PlayerController的输入,例如在游戏结束时禁用玩家移动。

3. PlayerController 与 Character

关系描述
  • PlayerController:管理玩家输入和交互逻辑。
  • Character:代表玩家在游戏世界中的实体。
联动方式
  • Character生成PlayerController在游戏开始时生成Character实例,并将其与玩家绑定。
  • PlayerController控制CharacterPlayerController接收玩家输入并将其转化为Character的动作,例如移动、跳跃或攻击。
  • Character反馈状态Character将自身状态(如生命值、位置)反馈给PlayerController,以便更新玩家界面或触发事件。

4. PlayerController 与 PlayerState

关系描述
  • PlayerController:管理玩家输入和交互逻辑。
  • PlayerState:存储和同步玩家个性化数据,如得分、生命值、装备等。
联动方式
  • PlayerState初始化PlayerController在玩家加入游戏时初始化PlayerState实例,并将其与玩家绑定。
  • PlayerController更新PlayerStatePlayerController根据玩家行为更新PlayerState中的数据,例如增加得分或更新装备。
  • PlayerState同步数据PlayerState将玩家数据同步到所有客户端,确保其他玩家看到一致的玩家状态。

5. GameState 与 PlayerState

关系描述
  • GameState:存储和同步全局游戏状态。
  • PlayerState:存储和同步玩家个性化数据。
联动方式
  • GameState汇总PlayerStateGameState可以汇总所有玩家的PlayerState数据,例如计算团队得分或排名。
  • PlayerState影响GameStatePlayerState中的数据变化(如玩家得分)可以触发GameState的更新,例如检查胜利条件。
  • 数据同步GameStatePlayerState中的数据通过网络复制同步到所有客户端,确保游戏状态和玩家状态的一致性。

6. 综合联动关系

  • GameMode作为游戏规则的核心,控制GameStatePlayerController的生成与逻辑。
  • PlayerController作为玩家与游戏世界的桥梁,管理CharacterPlayerState的行为与状态。
  • GameStatePlayerState分别管理全局和玩家的数据,并通过网络复制确保数据一致性。

示例:

此处以玩家之间建立组织的逻辑实现作为样例来表现Character、PlayerController、PlayerState、GameMode和GameState核心类之间的联动分工

步骤细节:

玩家的输入处理

PlayerController:负责处理玩家输入

但是Character类也能负责处理玩家输入

Character类蓝图处理逻辑

PlayerController类蓝图处理逻辑

有关将F输入放在Character优点与缺点

优点与缺点

优点
  • 直接访问Camera组件Character类可以直接访问其Camera组件,无需通过PlayerController
  • 逻辑集中:将与角色行为相关的输入逻辑集中在Character类中,便于管理和维护。
缺点
  • 职责不清Character类通常用于实现角色行为,将输入逻辑放在其中可能违反职责分离原则。
  • 多人游戏复杂性:在多人游戏中,Character类可能需要额外的网络同步逻辑,增加代码复杂性。

显然对比以上蓝图可见PlayerController类方法连线较多,函数调用开销也就较大,但是可通过缓存来解决此类问题如下图

因此在个人开发中,如果 PlayerController 类功能繁多,可以适当根据个人需求将简单输入事件放入Character中,并不影响实现,但是在多人合作开发中,建议按照UE的功能职责划分将输入处理放入PlayerController 类中。

总结

CharacterPlayerControllerPlayerStateGameModeGameState之间通过紧密的联动关系,共同实现游戏的功能和规则。GameMode定义规则,GameState存储全局状态,PlayerController管理玩家输入,PlayerState存储玩家数据,Character代表玩家实体。它们相互协作,确保游戏逻辑的正确性和数据的一致性。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317326.html

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

    相关文章

    Ubuntu24.04 启动后突然进入tty,无法进入图形界面

    问题描述 昨晚在编译 Android AOSP 14 后,进入了登录页面,但出现了无法输入密码的情况,且无法正常关机,只能强制重启。重启后,系统只能进入 TTY 页面,无法进入图形界面。 问题排查 经过初步排查&#x…

    搭建主从服务器

    任务需求 客户端通过访问 www.nihao.com 后,能够通过 dns 域名解析,访问到 nginx 服务中由 nfs 共享的首页文件,内容为:Very good, you have successfully set up the system. 各个主机能够实现时间同步,并且都开启防…

    jenkins 配置邮件问题整理

    版本:Jenkins 2.492.1 插件: A.jenkins自带的, B.安装功能强大的插件 配置流程: 1. jenkins->系统配置->Jenkins Location 此处的”系统管理员邮件地址“,是配置之后发件人的email。 2.配置系统自带的邮件A…

    JVM中常量池和运行时常量池、字符串常量池三者之间的关系

    文章目录 前言常量池(Constant Pool)运行时常量池(Runtime Constant Pool)字符串常量池(String Literal Pool)运行时常量池和字符串常量池位置变化方法区与永久代和元空间的关系三者之间的关系常量池与运行…

    Mysql篇——SQL优化

    本篇将带领各位了解一些常见的sql优化方法,学到就是赚到,一起跟着练习吧~ SQL优化 准备工作 准备的话我们肯定是需要一张表的,什么表都可以,这里先给出我的表结构(表名:userinfo) 通过sql查看…

    FPGA|Verilog-SPI驱动

    最近准备蓝桥杯FPGA的竞赛,因为感觉官方出的IIC的驱动代码思路非常好,写的内容非常有逻辑并且规范。也想学习一下SPI的协议,所以准备自己照着写一下。直到我打开他们给出的SPI底层驱动,我整个人傻眼了,我只能说&#x…

    Windows11 新机开荒(二)电脑优化设置

    目录 前言: 一、注册微软账号绑定权益 二、此电脑 桌面图标 三、系统分盘及默认存储位置更改 3.1 系统分盘 3.2 默认存储位置更改 四、精简任务栏 总结: 前言: 本文承接上一篇 新机开荒(一) 上一篇文章地址&…

    关于deepseek R1模型分布式推理效率分析

    1、引言 DeepSeek R1 采用了混合专家(Mixture of Experts,MoE)架构,包含多个专家子网络,并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数,但在每个前向传播…

    揭秘大数据 | 9、大数据从何而来?

    在科技发展史上,恐怕没有任何一种新生事物深入人心的速度堪比大数据。 如果把2012年作为数据量爆发性增长的第一年,那么短短数年,大数据就红遍街头巷尾——从工业界到商业界、学术界,所有的行业都经受了大数据的洗礼。从技术的迭…

    使用Dependency Walker和Beyond Compare快速排查dll动态库损坏或被篡改的问题

    目录 1、问题描述 2、用Dependency Walker工具打开qr.dll库,查看库与库的依赖关系以及接口调用情况,定位问题 3、使用Beyond Compare工具比较一下正常的msvcr100d.dll和问题msvcr100d.dll的差异 4、最后 C软件异常排查从入门到精通系列教程&#xff…

    repo init 错误 Permission denied (publickey)

    一、已经生成ssh-key并设置到gerrit上 二、已经设置.gitconfig (此步骤是公司要求,设置gerrit地址为一个别名之类的,有的公司不需要) 然后出现下面的错误,最后发现忘记设置git的用户名和邮箱 1. git config --globa…

    TSB - AD 解读 — 迈向可靠、透明的 TSAD 任务

    目录 一 文章动机 二 TSAD 领域内的两类缺陷 三 数据集的构建 四 实验结果及结论 项目宣传链接:TSB-AD 代码链接: TheDatumOrg/TSB-AD: TSB-AD: Towards A Reliable Time-Series Anomaly Detection Benchmark 原作者解读:NeurIPS 2…

    论文阅读:2023-arxiv Can AI-Generated Text be Reliably Detected?

    总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 文章目录 Abstract(摘要)1 Introduction(引言)Conclusion(结论) Can AI-Generated Text be Reliably D…

    Language Models are Few-Shot Learners,GPT-3详细讲解

    GPT的训练范式:预训练Fine-Tuning GPT2的训练范式:预训练Prompt predict (zero-shot learning) GPT3的训练范式:预训练Prompt predict (few-shot learning) GPT2的性能太差,新意高&…

    Hoppscotch 开源API 开发工具

    Hoppscotch 是一个开源的 API 开发工具,旨在为开发者提供一个轻量级、快速且功能丰富的 API 开发和调试平台。以下是对其主要特性和功能的详细介绍: 1. 轻量级与高效 Hoppscotch 采用简约的 UI 设计,注重易用性和高效性。它支持实时发送请求…

    【芯片验证】面试题·对深度为60的数组进行复杂约束的技巧

    朋友发给我的芯片验证笔试题,觉得很有意思,和大家分享一下。 面试题目 class A中一个长度为60的随机数组rand int arr[60],如何写约束使得: 1.每个元素的值都在(0,100]之间,且互不相等; 2.最少有三个元素满足勾股数要求,比如数组中包含3,4,5三个点; 请以解约束最快…

    Manus “Less structure,More intelligence ”独行云端处理器

    根据市场调研机构Statista数据显示,全球的AR/AR的市场规模预计目前将达到2500亿美元,Manus作为VR手套领域的领军企业,足以颠覆你的认知。本篇文章将带你解读Manus产品,针对用户提出的种种问题,Manus又将如何解决且让使…

    【再读】R1-Onevision通过跨模态形式化为复杂多模态推理任务提供了系统性解决方案

    R1-Onevision:跨模态形式化驱动的多模态推理技术突破,R1-Onevision通过跨模态形式化、双阶段训练和教育级基准测试,为多模态推理树立了新标杆。其技术创新不仅提升了模型在复杂任务中的表现,更重要的是为行业提供了一种可解释、可迁移的多模态处理范式。随着形式化方法的不断…

    SSM框架——Spring面试题

    Spring常见面试题 Spring框架中的单例bean是线程安全的吗 不是线程安全的 Spring框架中有一个Scope注解,默认的值就是singleton,单例的。 因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可…

    云原生大佬重生,记忆逐步复苏(十三:selinux模块)

    目录 1:什么是selinux 1.1 SELinux 的作用 1.2. SELinux 的工作原理 1.3. SELinux 的运行模式 2:解析selinux文件上下文标签策略 3:selinux的布尔值 4:调查和解决selinux问题 1:什么是selinux SELinux(Security-Enhanced L…