当前位置: 首页 > news >正文

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

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代表玩家实体。它们相互协作,确保游戏逻辑的正确性和数据的一致性。

    相关文章:

  • 【从零开始学习计算机科学】软件工程(一)软件工程中的过程模型
  • 分布式 IO 模块:助力实现智慧仓储
  • 2.2 B/S架构和Tomcat服务器
  • QT非UI设计器生成界面的国际化
  • 提高开发效率:公共字段自动化填充方案
  • 【优选算法篇】--深度解析之滑动窗口篇
  • appium之Toast元素识别
  • Matlab 雷达导引头伺服系统的建模与仿真研究
  • python-leetcode 55.子集
  • Flutter 按钮组件 ElevatedButton 详解
  • spring AOP学习
  • Matlab 汽车ABS实现模糊pid和pid控制
  • SQL语言的编译原理
  • SQLMesh宏操作符深度解析:掌握@star与@GENERATE_SURROGATE_KEY实战技巧
  • 重生之我在学Vue--第13天 Vue 3 单元测试实战指南
  • 【漫话机器学习系列】144.辛普森悖论(Simpson‘s Paradox)
  • 数学建模:MATLAB循环神经网络
  • 嵌入式八股RTOS与Linux---前言篇
  • YOLOv1到YOLOv12发展概述2025.3.17
  • 网络安全运维应急响应与溯源分析实战案例
  • ​关键词看中国经济“一季报”:韧,长期向好看底气
  • 修订占比近30%收录25万条目,第三版《英汉大词典》来了
  • 柴德赓、纪庸与叫歇碑
  • 人社部:我国劳动力市场潜力足,韧性强
  • 兵韬志略|美菲“肩并肩”军演超越传统范畴,凸显防务合作重大转型
  • 泽连斯基与特朗普进行简短会谈