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

Unreal Engine UObject

Unreal

  • 🏛 Unreal Engine - UObject
    • 🏷 定义
    • 🧩 类继承关系
    • ⚙️ 关键特性
    • 📝 使用方法
      • 1. 创建 UObject 对象
      • 2. 属性与函数绑定
    • 📚 常见子类与用途
    • 📦 小结

🏛 Unreal Engine - UObject


🏷 定义

  • UObjectUnreal Engine 中所有对象的基类
  • 提供 核心功能:内存管理、反射系统、序列化、垃圾回收。
  • 所有游戏对象、组件、资源(如 AActor, UComponent, UMaterial)都直接或间接继承自 UObject

🧩 类继承关系

UObject├── UActorComponent├── UAssetUserData├── UUserWidget└── AActor└── ... 其他 Actor 派生类
  • UObject:基础对象类,支持 GC、序列化、反射。
  • AActor:世界中的可放置对象。
  • UActorComponent:Actor 的组件,可组合行为。
  • UUserWidget:UI 基类,可在蓝图中可视化编辑。

⚙️ 关键特性

  • 反射系统(Reflection)
    • 支持 UCLASS(), UPROPERTY(), UFUNCTION() 宏。
    • 可在运行时访问类信息、属性、函数。
    • 蓝图和编辑器可以直接操作对象属性和函数。
  • 垃圾回收(Garbage Collection, GC)
    • 对象通过 NewObject<>() 创建,由 UE 自动管理生命周期。
    • 不需要手动 delete。
    • 支持 RootSet、标记引用对象防止被回收。
  • 序列化(Serialization)
    • 对象属性可以保存/加载。
    • 支持标记如 SaveGame, Transient, Config
    • 蓝图资产和游戏状态可以持久化。
  • 生命周期管理
    • 核心回调:
      • Constructor:对象构造
      • PostInitProperties():初始化完成
      • BeginDestroy():开始销毁
      • FinishDestroy():销毁完成
    • 支持动态创建、复制、重置。
  • 蓝图支持
    • 可作为蓝图基类创建资产。
    • 反射系统支持在蓝图中访问对象属性和调用函数。

📝 使用方法

1. 创建 UObject 对象

// 创建一个 UObject 派生类实例
UMyObject* MyObj = NewObject<UMyObject>();// 设置属性
MyObj->Health = 100;// 调用函数
MyObj->Initialize();
  • 建议使用 NewObject<>()ConstructObject<>(),避免直接用 new

2. 属性与函数绑定

  • 使用 UPROPERTY() 控制序列化和 GC
  • 使用 UFUNCTION() 暴露函数给蓝图
UCLASS()
class UMyObject : public UObject
{GENERATED_BODY()public:UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Stats")int32 Health;UFUNCTION(BlueprintCallable, Category="Actions")void Initialize();
};

📚 常见子类与用途

用途
AActor世界中可放置对象
UActorComponentActor 的组件行为
UUserWidgetUI 界面基类
UMaterial材质资源
UTexture纹理资源
USoundBase声音资源
UGameInstance游戏实例生命周期管理

📦 小结

  • UObject = UE 核心对象基类
  • ✅ 提供 反射、序列化、GC、生命周期管理
  • ✅ 所有游戏对象、组件、资源都继承自 UObject
  • ✅ 可在蓝图和 C++ 中统一管理对象

http://www.dtcms.com/a/344842.html

相关文章:

  • 嵌入式-EXTI的工作原理和按钮实验-Day19
  • 6口千兆图像采集卡:突破多路高清视觉系统的传输瓶颈
  • DFS序与树链剖分入门
  • RORPCAP: retrieval-based objects and relations prompt for image captioning
  • 多元函数积分学
  • kafka生产者 消费者工作原理
  • 线性回归8.21
  • 椭圆、双曲线、抛物线总对比表
  • Java 对象内存布局详解
  • Docker容器化部署实战:Tomcat与Nginx服务配置指南
  • 大模型推理-MTK Neurapilot sdk了解与环境配置-1
  • Unreal Engine UPrimitiveComponent
  • QT5 UI界面上Scroll Area控件显示滚动条
  • 浏览器开发CEFSharp+X86+win7(十三)之Vue架构自动化——仙盟创梦IDE
  • Lua脚本如何执行主程序的C函数
  • 智能二维码QR\刷IC卡\人脸AI识别梯控系统功能设计需基于模块化架构,整合物联网、生物识别、权限控制等技术,以下是多奥分层次的系统设计框架
  • 攻防世界—bug
  • 深度学习①【张量、全连接神经网络、激活函数、交叉熵损失函数】
  • 机器学习之线性回归:原理、实现与实践
  • 定制化鲜狗粮:宠物经济浪潮下的“精准喂养”革命
  • Python 办公自动化实战:Excel 批量处理 + 自动发邮件
  • 博士招生 | 英国谢菲尔德大学 招收计算机博士
  • 数据结构 -- 栈
  • 鹰角网络基于阿里云 EMR Serverless StarRocks 的实时分析工程实践
  • CDN行业中的SA板卡限速是什么
  • 品牌出海狂潮里,独立站支付的「隐形基建」正在改写规则
  • java18学习笔记-JavaDoc的@snippet注释标签
  • 数据结构 -- 队列
  • 【运维自动化-标准运维】变量的高级用法
  • 去中心化的私有货币与中心化的法定货币的对比分析