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

Unreal Engine Class System

Unreal

  • 🎮 Unreal Engine Class System
    • 🏛 核心概念
    • 🧩 基础类层级
    • 🛠️ 核心宏与用途
    • 🔗 运行时对象管理
    • ⚡ 常见继承关系图(简化)
    • 📦 推荐学习路径
    • 📚 参考

🎮 Unreal Engine Class System


🏛 核心概念

  • Class System:Unreal 基于 C++ 类层级体系 + 反射系统(UClass、UObject、UProperty),使得游戏对象、组件、蓝图都能统一管理。
  • 宏(UCLASS/USTRUCT/UENUM/UPROPERTY/UFUNCTION):告诉 Unreal Header Tool (UHT) 如何生成反射数据。
  • 反射 (Reflection):让 C++ 类在运行时能被引擎识别、序列化、暴露给蓝图/编辑器。

🧩 基础类层级

作用常见用途
UObject所有 UE 类的基类,支持反射、GC、序列化配置类、数据对象
AActor可放入关卡的对象,带有 Transform玩家、敌人、道具
APawn可被控制的 Actor玩家角色、AI 角色
ACharacter内置移动、骨骼、动画的 Pawn人形角色
UActorComponent附加到 Actor 的功能模块血量组件、射击组件
USceneComponent带有 Transform 的组件摄像机、碰撞体、Mesh
UGameInstance游戏生命周期管理,全局对象全局数据、网络会话
UGameMode定义规则与流程,只在服务器存在单局规则
UGameState储存全局游戏状态分数、时间
APlayerController玩家输入与控制逻辑本地/远程玩家控制
APlayerState储存玩家信息(网络同步)分数、昵称
AHUDUI 显示血条、准星
UUserWidgetUMG UI 元素菜单、HUD

🛠️ 核心宏与用途

  • UCLASS()

    声明一个继承自 UObject 的类,可以被反射系统识别。

  • USTRUCT()

    声明一个可序列化的结构体。

  • UENUM()

    声明一个可暴露给编辑器/蓝图的枚举。

  • UPROPERTY()

    修饰类成员变量,使其可被编辑器、蓝图访问、序列化。

  • UFUNCTION()

    修饰成员函数,使其能被蓝图调用或绑定事件。


🔗 运行时对象管理

  • 反射系统 (UClass/UObject)
    • UClass:存放类的元信息。
    • UObject:实例化后的对象基类。
  • GC (Garbage Collection)
    • Unreal 使用引用计数 + 标记清理机制。
    • 必须用 UPROPERTY() 标记指针,才能被 GC 正确追踪。

⚡ 常见继承关系图(简化)

UObject└── AActor├── APawn│     └── ACharacter├── APlayerController├── AGameModeBase├── AGameStateBase├── AHUD└── ...
UObject└── UActorComponent└── USceneComponent├── UCameraComponent├── UStaticMeshComponent├── UPrimitiveComponent└── ...

📦 推荐学习路径

  1. 熟悉 UObject 生命周期与 GC。
  2. 学习 AActor 与组件化设计。
  3. 理解 Pawn / Character输入系统
  4. 熟悉 GameMode / GameState / PlayerController / PlayerState 的职责分工。
  5. 进阶:研究 Gameplay Framework + UMG + AIController + Subsystem

📚 参考

  • Unreal 官方文档: Unreal Gameplay Framework
  • 源码浏览:Engine/Source/Runtime/Engine/
  • 推荐书籍:《Learning C++ by Creating Games with Unreal Engine》

http://www.xdnf.cn/news/1346689.html

相关文章:

  • 图数据库(neo4j)基础: 分类/标签 节点 关系 属性
  • 蓝牙部分解析和代码建构
  • set_disable_timing应用举例
  • OpenCV 图像边缘检测
  • 从“配置化思维”到“前端效率革命”:xiangjsoncraft 如何用 JSON 简化页面开发?
  • k8s 简介及部署方法以及各方面应用
  • 子类(派生类)使用父类(基类)的成员
  • 快速了解神经网络
  • AI赋能体育训练突破:AI动作捕捉矫正精准、战术分析系统提效率,运动员破瓶颈新路径
  • 数据结构之深入探索归并排序
  • go 常见面试题
  • NLP学习之Transformer(2)
  • 网络编程6(JVM)
  • 保护 PDF 格式:禁止转换为其他格式文件
  • html基本元素
  • C#_接口设计:角色与契约的分离
  • HTML5详篇
  • 自定义单线通信协议解析
  • Yapi中通过MongoDB修改管理员密码与新增管理员
  • 【Java后端】 Spring Boot 集成 Redis 全攻略
  • 软件设计师——计算机网络学习笔记
  • 华为网路设备学习-29(BGP协议 四)路由策略-实验
  • 分段渲染加载页面
  • 【LeetCode 热题 100】139. 单词拆分——(解法一)记忆化搜索
  • 浏览器开发CEFSharp+X86+win7(十三)之Vue架构自动化——仙盟创梦IDE
  • STM32F1 EXTI介绍及应用
  • 光耦合器:电子世界的 “光桥梁“
  • ZYNQ启动流程——ZYNQ学习笔记11
  • X00238-非GNSS无人机RGB图像卫星图像视觉定位python
  • 25年8月通信基础知识补充1:中断概率与遍历容量、Sionna通信系统开源库、各种时延区分