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

UE5 Gameplay框架及继承关系详解

文章目录

  • 前言
  • 一、基础类继承关系
  • 二、核心类的职责与协作
    • 2.1 Pawn 与 Character
    • 2.2 Controller
    • 2.3 GameMode & GameState
    • 2.4 PlayerState 与 HUD
  • 三、组件(Component)系统
  • 四、Gameplay Ability System(GAS)
  • 五、继承关系图示
  • 六、协作流程示例
  • 七、设计哲学与扩展性
  • 总结


前言

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


一、基础类继承关系

UE5 的 Gameplay 框架基于 面向对象组件化 设计,核心类继承自 UObjectAActor

  1. UObject
  • 所有 UE 对象的基类,提供反射(Reflection)、序列化(Serialization)、垃圾回收(GC)等功能。
  • 核心功能:支持蓝图系统、运行时类型信息(RTTI)、编辑器集成。
  1. AActor(继承自 UObject
  • 游戏世界中的实体(如角色、道具、光源),具备位置、旋转、缩放属性,支持组件(UActorComponent)。
  • 关键特性:生命周期管理(BeginPlay, Tick, Destroy)、网络复制(bReplicates)。

二、核心类的职责与协作

2.1 Pawn 与 Character

  • APawn(继承自 AActor
    • 可被 Controller 控制的实体,提供基本移动和输入处理能力。
    • 子类
      • ACharacter:专为人形角色设计,内置 UCharacterMovementComponent(处理跳跃、攀爬等复杂移动逻辑)和胶囊体碰撞。
      • ADefaultPawn:默认包含移动组件、碰撞体和静态网格组件。
      • ASpectatorPawn:用于观战视角,关闭物理碰撞和渲染。

2.2 Controller

  • AController(继承自 AActor
    • 控制逻辑的抽象,与 APawn 分离(逻辑与表现分离)。
    • 子类
      • APlayerController:处理玩家输入(键盘、鼠标)、管理 UI(HUD)、摄像机逻辑,每个玩家客户端对应一个实例。
      • AAIController:驱动 AI 行为(如行为树、导航系统)

2.3 GameMode & GameState

  • AGameModeBase(继承自 AActor
    • 定义游戏规则(如胜利条件、玩家生成逻辑),仅在服务器存在。
    • 生命周期方法InitGame(初始化规则)、PostLogin(玩家登录后处理)。
  • AGameStateBase(继承自 AActor
    • 同步全局游戏状态(如剩余时间、玩家列表),服务器更新后自动同步到客户端。

2.4 PlayerState 与 HUD

  • APlayerState(继承自 AActor
    • 存储玩家数据(如分数、装备),在多人游戏中同步到所有客户端113。
  • AHUD(继承自 AActor
    • 绘制游戏内 UI(如血条、计分板),通常与 UUserWidget 结合使用

三、组件(Component)系统

UE5 通过 组件化设计 实现功能模块化,核心组件类继承自 UActorComponent

  1. UActorComponent

    • 附加到 Actor 的功能模块(如生命值、技能系统),不直接依赖 Transform。
  2. USceneComponent(继承自 UActorComponent

    • 具有空间属性(位置、旋转、缩放),支持父子嵌套,如 UCameraComponent
  3. UPrimitiveComponent(继承自 USceneComponent

    • 支持物理碰撞和渲染,如 UStaticMeshComponent(静态网格)。
  4. UCharacterMovementComponent

    • 专为 ACharacter 设计,处理复杂移动逻辑(如跳跃、攀爬)。

四、Gameplay Ability System(GAS)

GAS 是 UE5 中用于构建复杂技能系统的插件,核心类包括:

  1. UAbilitySystemComponent(继承自 UActorComponent

    • 管理技能、属性和效果,负责网络同步和预测。
  2. UGameplayAbility

    • 定义技能逻辑(如攻击、施法),支持冷却和资源消耗。
  3. UGameplayEffect

    • 实现状态效果(如 Buff/Debuff),通过数据驱动修改属性。
  4. UAttributeSet

    • 定义和管理角色属性(如生命值、魔法值),支持网络同步。

五、继承关系图示

UObject
├── AActor
│   ├── APawn
│   │   └── ACharacter
│   ├── AController
│   │   ├── APlayerController
│   │   └── AAIController
│   ├── AGameModeBase
│   ├── AGameStateBase
│   ├── APlayerState
│   └── AHUD
└── UActorComponent├── USceneComponent│   └── UPrimitiveComponent└── UAbilitySystemComponent

六、协作流程示例

  1. 游戏启动

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

    • AGameModeBase 生成 APlayerControllerAPawnAPlayerController 通过 Possess() 控制 APawn
  3. 游戏进行

    • AGameStateBase 同步全局状态(如倒计时),APlayerState 同步玩家数据。
  4. 技能释放

    • UAbilitySystemComponent 触发 UGameplayAbility,应用 UGameplayEffect 修改目标属性。

七、设计哲学与扩展性

  1. Actor-Component 模型

    • Actor 是实体容器,通过组合组件实现功能,避免深度继承。
    • 逻辑与表现分离AController 控制逻辑,APawn 处理物理表现。
  2. 网络同步

    • 使用 bReplicates 标记同步属性,通过 UFUNCTION(Server, Client) 实现远程调用(RPC)。
  3. 扩展性

    • 通过接口(UInterface):定义跨类功能(如 IDamageable)。
    • 自定义组件:继承 UActorComponent 实现模块化功能(如 UHealthComponent)。

总结

UE5 的 Gameplay 框架通过清晰的类层次和组件化设计,提供了高度模块化和可扩展的架构。核心思想是:

  • Actor 是世界的实体
  • Controller 是逻辑的控制者
  • Component 是功能的模块
  • GameMode/GameState 是全局规则和状态

理解这些类的继承关系和协作方式,是高效开发 UE5 游戏的关键。


http://www.mrgr.cn/news/92544.html

相关文章:

  • Windows下不建议使用C/C++运行库的本地化功能
  • 计算机工具基础(五)——Vim
  • KubeKey一键安装部署k8s集群和KubeSphere详细教程
  • Android移动应用开发实践-1-下载安装和简单使用Android Studio 3.5.2版本(频频出错)
  • 数据开发面试:DQL,DDL,DTL
  • 初会学习记录
  • 【射频仿真学习笔记】Cadence的Layout EXL与ADS dynamic link联动后仿
  • Harmony开发笔记(未完成)
  • 【JAVA-数据结构】Map和Set
  • 30 分钟从零开始入门 CSS
  • DeepSeek R1 + 飞书机器人实现AI智能助手
  • spring结合mybatis多租户实现单库分表
  • C语言机试编程题
  • <tauri><rust><GUI><PLC>基于tauri,编写一个串口485调试助手
  • thinkphp下的Job队列处理
  • Windows版FFmpeg使用及B站视频下载示例python源码
  • 最新版 (持续更新)docker 加速源 linux yum 源
  • 001 Kafka入门及安装
  • 弱监督语义分割学习计划(1)-简单实现Open Vocabulary Label但是效果不好
  • Vue 3 搭建前端模板并集成 Ant Design Vue(2025)