UE5 Gameplay框架及继承关系详解

news/2025/2/25 7:01:41

文章目录

  • 前言
  • 一、核心类及其继承关系
  • 二、核心类的职责与协作
    • 2.1 Actor & Pawn
    • 2.2 Controller
    • 2.3 GameMode & GameState
    • 2.4 PlayerState
    • 2.5 HUD & UI
  • 三、协作流程示例
  • 总结


前言

Unreal Engine 5(UE5)的 Gameplay 框架 是一个高度模块化的系统,用于构建游戏逻辑、角色控制、多人同步和游戏规则等核心功能。其核心类和继承关系遵循面向对象设计原则,以下是详细的框架解析:


一、核心类及其继承关系

以下是 UE5 Gameplay 框架中关键类的 继承树

  1. UObject

    • 所有 UE 对象的基类,提供反射(Reflection)、序列化(Serialization)、垃圾回收(GC)等基础功能。
  2. AActor

    • 继承自 UObject,是游戏中所有可放置在场景中的对象的基类(如角色、道具、光源等)。

    • 包含位置、旋转、缩放等空间属性,支持 Tick 逻辑更新。

    • 子类

      • APawn:可被玩家或 AI 控制的实体(如角色、载具)。

        • ACharacter:扩展了 APawn,内置角色移动组件(UCharacterMovementComponent)和胶囊体碰撞。
      • AController:控制 APawn 的逻辑实体。

        • APlayerController:玩家输入和 UI 交互的核心。

        • AAIController:驱动 AI 行为。

    • AGameModeBase:定义游戏规则(如胜利条件、玩家生成规则)。

      • AGameMode(已弃用,推荐使用 AGameModeBase)。
    • AGameStateBase:同步游戏全局状态(如分数、剩余时间)。

      • AGameState(已弃用,推荐使用 AGameStateBase)。
    • APlayerState:存储玩家数据(如昵称、分数)。

    • AHUD:管理游戏界面绘制(如血条、计分板)。

二、核心类的职责与协作

2.1 Actor & Pawn

  • AActor
    • 所有场景对象的基类,提供生命周期管理(BeginPlay, Tick, Destroy)和组件系统(UActorComponent)。

    • APawn

      • 可被控制的实体,通过 AController 接收输入或 AI 指令。
    • ACharacter

      • 专为角色设计,内置 CharacterMovementComponent 支持复杂移动(跳跃、攀爬)。

2.2 Controller

  • AController

    • 逻辑与物理实体的分离:Controller 控制 Pawn,Pawn 处理物理表现。
  • APlayerController

    • 处理玩家输入(如键盘、鼠标),管理 UI(通过 UUserWidget)。
    • 在多人游戏中,每个玩家客户端有一个 PlayerController。
  • AAIController

    • 驱动 AI 行为树(Behavior Tree)或状态机。

2.3 GameMode & GameState

  • AGameModeBase

    • 仅在服务器存在,定义游戏规则(如玩家生成逻辑、胜利条件)。
    • 生命周期方法:InitGame, PostLogin, StartPlay
  • AGameStateBase

    • 同步到所有客户端,存储全局游戏状态(如剩余时间、玩家列表)。
    • 服务器更新后自动同步到客户端。

2.4 PlayerState

  • APlayerState
    • 存储玩家数据(如分数、装备),在多人游戏中同步到所有客户端。
    • 每个玩家(包括 AI)有一个 PlayerState

2.5 HUD & UI

  • AHUD
    • 绘制游戏内 UI(如准星、血条),通常与 UUserWidget 结合使用。
    • 仅在本地玩家客户端存在。

三、协作流程示例

  1. 游戏启动

    • 服务器创建 AGameModeBase,客户端创建 AGameStateBase
  2. 玩家加入

    • 服务器通过 GameMode 生成 APlayerControllerAPawn
    • PlayerController 获取输入并驱动 Pawn
  3. 游戏进行

    • GameState 同步全局状态(如倒计时),PlayerState 同步玩家数据。
    • HUD 根据本地数据绘制 UI。
  4. 游戏结束

    • GameMode 检测胜利条件并触发结束逻辑。

总结

UObject
└── AActor
    ├── APawn
    │   └── ACharacter
    ├── AController
    │   ├── APlayerController
    │   └── AAIController
    ├── AGameModeBase
    ├── AGameStateBase
    ├── APlayerState
    └── AHUD

通过理解这些类的职责和协作关系,开发者可以高效构建符合 UE5 规范的 Gameplay 逻辑,同时充分利用引擎的多人同步和模块化特性。


http://www.niftyadmin.cn/n/5865129.html

相关文章

OpenCV计算摄影学(1)图像修复(Inpainting)的函数inpaint()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用图像中选定区域的邻域来恢复该选定区域。 cv::inpaint 函数是 OpenCV 中用于图像修复(Inpainting)的一个重要函数。它…

Kafka面试题----Kafka是如何保证顺序消费的

在 Kafka 中,默认情况下消息是按分区进行顺序存储和读取的,但全局顺序消费(即所有分区的消息按顺序消费)较难实现。下面分别介绍 Kafka 按分区顺序消费以及实现全局顺序消费的相关内容。 按分区顺序消费 Kafka 本身可以保证单个…

机器人“战场”:创新、落地与未来

从1999年的机器管家,2001年的机器人小孩大卫,到2015年拥有自我意识的“查派”,在科幻电影里,人们赋予了对机器人的各种形象和想象。2018年,尽管只是实验室的试验品,但波士顿动力机器狗Spot的视频还是在国内…

python 判断 字符串在字典列表中

在Python中,如果你想判断一个字符串是否存在于一个字典列表中,你可以通过遍历这个列表并检查每个字典是否包含你想要找的字符串键来实现。这里有几种方法可以做到这一点: 方法1:使用any()函数 你可以使用any()函数和字典的get方法…

【MySQL】第九弹---掌握SQL关键操作:更新、删除、插入与聚合分析的秘诀

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】 目录 1 Update 2 Delete 2.1 删除数据 2.2 截断表 3 插入查询结果 4 聚合函数 5 group by子句的使用 1 Update 语法…

【AI+智造】DeepSeek价值重构:当采购与物控遇上数字化转型的化学反应

作者:Odoo技术开发/资深信息化负责人 日期:2025年2月24日 引言:从事企业信息化工作16年,我见证过无数企业从手工台账到ERP系统的跨越。但真正让采购和物控部门脱胎换骨的,是融合了Deepseek AI的Odoo数字化解决方案——…

如何在 CMake 上设置新项目以获得成功

选择正确的构建系统可以决定项目的成功与否。从处理依赖项到确保正确编译和链接代码,正确的构建系统可以节省 你时间并避免潜在的麻烦。 在众多可用选项中,CMake 构建系统脱颖而出,可以处理复杂的跨平台项目。 本教程介绍了 CMake 的受欢迎…

【C】堆的应用1 -- 堆排序

之前学习了堆,堆的一棵以顺序结构存储的完全二叉树,堆本身又氛围大根堆和小根堆,假设以大根堆为例,由于堆顶部元素是一棵二叉树里面最大的元素,所以如果每次都取堆顶的元素,那么取出的元素就是一个降序排列…