UE_C++ —— UE反射系统111
Unreal Engine Reflection System是通过各种宏来封装类以提供引擎和编辑器功能当使用UE编程时可使用标准的C类、函数和变量UE中对象的基类是UObject每个类都定义了一个模板用于新Actor或对象可使用UCLASS宏来标记从UObject派生的类以便UObject handling system识别它们TSubclassOf是一个提供类型安全的UClass模板类从特定类型派生的类非常有用如可将变量公开给蓝图设计者可赋加特定武器类为玩家角色指定生成类可包含structsstructs是可帮助组织和操控其相关成员属性的数据结构可使用USTRUCT()宏来单独定义Unreal Smart Pointer Library是C11智能指针的自定义实现旨在减轻内存分配和追踪的负担包含行业标准的 Shared Pointers、Weak Pointers、Unique Pointers、Shared References非空共享指针Interfaces提供可以在多个或不同的类中实现函数和额外的游戏行为玩家角色可以与世界中的各种Actor互动每个互动都能引起对一个事件的不同反应Metadata Specifiers控制classes、interfaces、structs、enums、functions或properties与引擎和编辑器各方面的交互方式每一种类型的数据结构或成员都有自己的元数据说明符列表UFUNCTION、UPROPERTY宏使UE能注意到新的类、函数和变量这些宏由引擎进行垃圾回收在指定宏时可在UE内编辑和显示它们一ObjectsUObject是引擎对象的基类UCLASS宏用于标记UObject及其子类以便UObject handling system识别// UObject 派生类的基础头文件使用编辑器的New C Class命令是设置格式正确头文件的最简单方法 #pragma once #include Object.h #include MyObject.generated.h UCLASS() //使引擎能识别 UMyObject支持大量参数类说明符 class MYPROJECT_API UMyObject : public UObject //将UMyObject类公开到其他模块则需要指定 MYPROJECT_API { GENERATED_BODY() //此宏不获取参数但会对类进行设置以支持引擎要求的基础结构所有UCLASS和USTRUCT均有此要求 };UCLASS宏为 UObject 提供了一个用于描述引擎类型的 UCLASS 引用每个 UCLASS 都保留一个CDOClass Default Object的对象CDO 本质上是一个默认模板对象由类构造函数生成之后就不再修改可根据对象实例获取其 UCLASS 和 CDO通常它们都是只读类型使用GetClass()函数即可随时访问对象实例的 UCLASS UCLASS 包含定义类的properties和functions是标准C代码可用的普通C变量和函数但被引擎特定的元数据所标记控制在对象系统中的行为注UObject 类还可包括仅限本地的属性没有用 UFUNCTION 或者 UPROPERTY 标记用于反射仅被标识符宏标记的函数和属性会被列举在对应的 UCLASS 中UObjects 可有任意类型的成员变量properties或函数为便于引擎识别和操纵这些变量和函数需以特殊的宏来标记并符合一定类型的标准UObject 创建UObjects 不支持构造器参数所有的C UObject都会在引擎启动的时候初始化引擎会调用其默认构造器如没有默认的构造器UObject 将不会编译UObject 构造器应该轻量化仅用于设置默认值和子对象构造时不应该调用其它功能对于Actor和Actor组件初始化功能应放在BeginPlay()中NewObject // UObjects 仅应在运行时使用 NewObject 构建 CreateDefaultSubobject // 在构造函数中使用应仅处理本地数据或加载静态资源注UObjects永远不要使用new操作符所有的UObjects都应由引擎管理内存和垃圾回收UObject 提供的功能此系统的使用不强制要求甚至有时不适合使用但却存在以下益处垃圾回收引用更新反射序列化默认属性变化自动更新自动属性初始化自动编辑器整合运行时类型信息可用网络复制注大部分适用于 UStructs有与UObject 一样的反射和序列化能力UStruct 被当作数值类型处理并且不会垃圾回收UObject 更新Ticking 代表虚幻引擎中对象的更新方式所有Actors均可在每帧被 tick便于执行必要的更新计算或操作Actor 和 Actor组件在注册时会自动调用它们的 Tick 函数然而UObjects不具有内建的更新能力在必须的时候可以使用 inherits 类说明符从FTickableGameObject继承即可添加此能力 这样即可实现Tick()函数引擎每帧都将调用此函数注大部分游戏内对象都是Actor 可以按用户设置的最短间隔tick而不是每帧tickUObject 销毁对象不被引用后垃圾回收系统将自动进行对象销毁这意味着没有任何UPROPERTY指针、引擎容器、TStrongObjectPtr或类实例对它的强引用垃圾回收器运行时未引用对象将被从内存中移除此外函数MarkPendingKill()可在对象上直接调用。此函数将把指向对象的所有指针设为NULL并从全局搜索中移除对象对象将在下一次垃圾回收过程中被完全删除Object-MarkPendingKill()已被Obj-MarkAsGarbage()所替代这个新的函数现在仅用于追踪失效对象如gc.PendingKillEnabledtrue那么所有标记为PendingKill的对象会被垃圾回收器自动清空并销毁强引用会将 UObject 保持存活状态如不想让这些引用保留 UObject应改为弱指针或改为由程序员手动清除的普通指针如对性能有较高要求的话IsValid()用于检查它是 null 或垃圾但是大部分情况下 IsValid 可以被更正规的编程规则替代如在调用OnDestroy事件时将对应指针置空如禁用了PendingKill()MarkGarbage()将会提醒对象的所有者该对象将要被销毁但是对象本身直到所有对它的引用都解除之后才会被垃圾回收对于 Actor即使 Actor 被调用了Destroy()并且被从关卡中移除还是会等到所有对它的引用都解除之后才会被垃圾回收已有的用于 nullptr 的检查应该被IsValid()调用所替代除非进行手动清除因为指针不再会被垃圾回收器通过MarkPendingKill()自动清除二Properties

相关新闻

探索CLIP ViT-B/16 - LAION-2B模型的未来展望

探索CLIP ViT-B/16 - LAION-2B模型的未来展望

探索CLIP ViT-B/16 - LAION-2B模型的未来展望 【免费下载链接】CLIP-ViT-B-16-laion2B-s34B-b88K 项目地址: https://ai.gitcode.com/hf_mirrors/laion/CLIP-ViT-B-16-laion2B-s34B-b88K 在人工智能的快速发展中,图像和文本的结合为研究和应用带来了前所未有…

2026/8/5 18:15:13 阅读更多 →
CLIP ViT-B/16 - LAION-2B 模型性能评估与深度解析

CLIP ViT-B/16 - LAION-2B 模型性能评估与深度解析

CLIP ViT-B/16 - LAION-2B 模型性能评估与深度解析 【免费下载链接】CLIP-ViT-B-16-laion2B-s34B-b88K 项目地址: https://ai.gitcode.com/hf_mirrors/laion/CLIP-ViT-B-16-laion2B-s34B-b88K 在当今人工智能领域,模型性能的评估和测试是确保其可靠性和有效…

2026/8/5 18:15:13 阅读更多 →
5个关键步骤实现Nginx LDAP认证:完整指南与Python核心代码解析

5个关键步骤实现Nginx LDAP认证:完整指南与Python核心代码解析

5个关键步骤实现Nginx LDAP认证:完整指南与Python核心代码解析 【免费下载链接】nginx-ldap-auth Example of LDAP authentication using ngx_http_auth_request_module 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-ldap-auth 在现代企业级Web应用中…

2026/8/5 18:14:13 阅读更多 →

最新新闻

中国大模型“八周五连发“:开源与低成本重写全球选型

中国大模型“八周五连发“:开源与低成本重写全球选型

一、为什么这件事值得在 8 月 5 日这天关注如果你最近在选型大模型,大概会有一种"追不动"的感觉:上个月还在比参数,这个月又冒出好几个新名字。据《21 世纪经济报道》2026-08-05 的梳理,从 7 月到 8 月初的约八周时间里…

2026/8/5 18:56:28 阅读更多 →
突破性VSCode PlantUML实战:用文本驱动UML绘图的深度进阶指南 [特殊字符]

突破性VSCode PlantUML实战:用文本驱动UML绘图的深度进阶指南 [特殊字符]

突破性VSCode PlantUML实战:用文本驱动UML绘图的深度进阶指南 🚀 【免费下载链接】vscode-plantuml Rich PlantUML support for Visual Studio Code. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-plantuml 在当今快速迭代的软件开发环境…

2026/8/5 18:56:28 阅读更多 →
山海万灵 HarmonyOS 文化知识实战(12):CMS Dashboard 与内容编辑模型

山海万灵 HarmonyOS 文化知识实战(12):CMS Dashboard 与内容编辑模型

文化知识应用的后台不是“多一个录入页面”,而是让内容、图谱、来源和客户端显示模型保持一致。山海万灵的 CMS Dashboard 汇总内容节点、区域、展厅、图谱边和 Prompt 场景;内容编辑模型则把一条神兽记录的标题、摘要、出处、状态和更新时间放到可审阅的…

2026/8/5 18:56:28 阅读更多 →
如何用PoeCharm中文版打造《流放之路》最强角色:新手到高手的完整指南

如何用PoeCharm中文版打造《流放之路》最强角色:新手到高手的完整指南

如何用PoeCharm中文版打造《流放之路》最强角色:新手到高手的完整指南 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 还在为《流放之路》复杂的角色构建而头疼吗?面对密密麻…

2026/8/5 18:56:28 阅读更多 →
从数据碎片到数字记忆体:重塑你的社交DNA

从数据碎片到数字记忆体:重塑你的社交DNA

从数据碎片到数字记忆体:重塑你的社交DNA 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 你…

2026/8/5 18:56:28 阅读更多 →
小众但暴利的AI模板赛道正在消失——仅剩最后67天窗口期,附可立即复用的5套冷启动SOP

小众但暴利的AI模板赛道正在消失——仅剩最后67天窗口期,附可立即复用的5套冷启动SOP

更多请点击: https://intelliparadigm.com 第一章:AI模板售卖赛道的底层逻辑与窗口期倒计时 AI模板售卖并非简单的内容复刻,而是模型能力、用户场景与商业交付三者耦合的轻量级产品化实践。其底层逻辑根植于“提示工程工业化”——将碎片化P…

2026/8/5 18:55:28 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →