虚幻引擎反射系统

使用宏提供引擎和编辑器各种功能,封装你的类。使用虚幻时,可以使用标准的C++类,函数和变量

虚幻中对象的基类是UObject,UCALSS宏的作用是标记UObject的子类,以便UObject处理系统可以识别他们

UObject创建

1.不支持构造器参数。所有的C++ UObject都会在引擎启动的时候初始化,然后引擎会调用其默认构造器。如果没有默认的构造器,那么 UObject 将不会编译。

2.构造器应该轻量化,仅用于设置默认的数值和子对象,构造时不应该调用其它功能和函数。对于 Actor和Actor组件,初始化功能应该输入 BeginPlay() 方法。

3.永远都不应使用 new 运算符。所有的 UObjects 都由虚幻引擎管理内存和垃圾回收。如果通过 new 或者 delete 手动管理内存,可能会导致内存出错

UObjects提供的功能

垃圾回收 引用更新 反射 序列化默认属性变化自动更新 自动属性初始化 自动编辑器整合 运行时类型信息可用 网络复制

头文件格式

UObject 在源(.cpp)文件中的实现与其他 C++ 类相似,其在头(.h)文件中的定义必须遵守特定的基础结构,以便在虚幻引擎 4 中正常使用。

使用编辑器的"New C++ Class"命令是设置格式正确头文件的最简单方法。

UObject 派生类的基础头文件可能看起来与此相似,假定 UObject 派生物被称为 UMyObject,其创建时所在的项目被称为 MyProject:

pragma once

include 'Object.h'

include 'MyObject.generated.h'

UCLASS() //使引擎能识别UMyObject

class MYPROJECT_API UMyObject : public UObject //如果UMyObject类公开到其他模块,则需指定MYPROJECT_API

{

GENERATED_BODY()

//此宏不获取参数,但会对类进行设置,以支持引擎要求的基础结构。所有UCLASS和USTRUCT都有此要求

}

Ticking 代表虚幻引擎中对象的更新方式。所有Actors均可在每帧被 tick,便于您执行必要的更新计算或操作。

Actor 和 Actor组件在注册时会自动调用它们的 Tick 函数,然而,UObjects 不具有嵌入的更新能力。在必须的时候,可以使用 inherits 类说明符从 FTickableGameObject 继承即可添加此能力。

这样即可实现 Tick() 函数,引擎每帧都将调用此函数。

销毁对象

对象不被引用后,垃圾回收系统将自动进行对象销毁。

这意味着没有任何 UPROPERTY 指针、引擎容器、TStrongObjectPtr 或类实例会拥有任何对它的强引用。

弱指针

不会组织对象的销毁 如果引用对象被销毁,则弱指针也将自动清空。弱指针的操作意图是保存一个到达目标对象的指针,但不会控制该对象的生命周期。

UE5笔记:虚幻引擎反射系统和对象的更多相关文章

  1. 使用虚幻引擎中的C++导论(三-反射系统与迭代器)

    使用虚幻引擎中的C++导论(三) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如果有不 ...

  2. 使用虚幻引擎中的C++导论(四-内存管理与垃圾回收)(终)

    使用虚幻引擎中的C++导论(四)(终) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如 ...

  3. 使用虚幻引擎中的C++导论(一-生成C++类)

    使用虚幻引擎中的C++导论(一) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如果有不 ...

  4. 使用虚幻引擎中的C++导论(二-UE4基类)

    使用虚幻引擎中的C++导论(二) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如果有不 ...

  5. 虚幻引擎4设置Visual Studio

    转自:http://www.unrealchina.net/portal.php?mod=view&aid=149 设置Visual Studio和虚幻引擎4协同工作有利于提高开发人员使用UE ...

  6. 虚幻引擎中的数组---TArray: Arrays

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/45367171 作者:ca ...

  7. ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置

    ROSIntegration ROSIntegrationVision与虚幻引擎4(Unreal Engine 4)的配置 操作系统:Ubuntu 18.04 虚幻引擎:4.26.2 目录 ROSIn ...

  8. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  9. Unreal Engine 虚幻引擎宣布对开发者免费

    虚幻引擎4现在可供每个人免费使用,而且所有未来的更新都将免费!您可以下载引擎并将其用于游戏开发的各个方面,包括教育.建筑以及可视化,甚至虚拟现 实.电影和动画. 当您发布游戏或应用时,在您的每个游戏在 ...

  10. WCF 笔记 (2) - 传输泛型 List 对象

    WCF 笔记 (2) - 传输泛型 List 对象 本帖介绍怎么在 WCF 中,在 Server-side 和 Client-side 之间,传递默认无法传输的 List<T>.List& ...

随机推荐

  1. 【CDQ分治】【模板】三维偏序(陌上花开)

    P3810 [模板]三维偏序(陌上花开) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc++.h> using namespace ...

  2. 牛客周赛 Round 6

    牛客周赛 Round 6 A-游游的数字圈_牛客周赛 Round 6 (nowcoder.com) 枚举即可 #include <bits/stdc++.h> #define int lo ...

  3. 卷积神经网络CNN实战:MINST手写数字识别——数据集下载与网络训练

    数据集下载 这一部分比较简单,就不过多赘述了,把代码粘贴到自己的项目文件里,运行一下就可以下载了. from torchvision import datasets, transforms # 定义数 ...

  4. Microsoft Ignite China, Watch Party - Why adopt Windows 11 today 升级了啥?

    Microsoft Ignite 2021 大会采用线上直播形式,围绕云技术.数据智能.未来工作方式.全民创新及数据安全等技术议题,结合全球及本地最新产品发布.科技趋势与成功案例,将带您体验独一无二的 ...

  5. mfc的ClistCtrl控件列的排序

    在网上看了许多排序的方法,都没看懂,初学者的悲剧,然后就自己弄了个,请大家指正. ClistCtrl控件的行带着一个结构体,不过那结构体不好懂,看得眼花缭乱.好多也弄不明白,就自己写了个结构体,把一行 ...

  6. 【Python】Selenium自动化测试之滑块拼图验证码图片方法

    在项目中有时验证码是滑块拼图形式的,这种验证码该如何完成验证呢? 有以下几个步骤: 目录 第一步:得到验证码图片 第二步:匹配缺口照片在完整照片的位置 第三步:机器模拟人工滑动轨迹 第四步:判断拼图是 ...

  7. EF Core – Get Started 搭建单侧环境

    有时候想搭个环境做测试, 又记不住那些 command, 官方教程又啰嗦. git clone 模板又不太好管理, 索性记入在这里吧. 创建项目 dotnet new webapp -o Simple ...

  8. Clickhouse-insert 数据写入不成功问题

    [应用场景] 对副本表进行 alter delete 数据后,同样的数据再进行 insert into 操作. [问题复现] [问题解释] 对副本表 insert 语句的数据会划分为数据块. 每个数据 ...

  9. Java项目笔记(三)

    一.前端传参类似以下格式,对象中包含一个对象,后台此时接收option为stirng类型 curriculumid question answer option {optionOne ,optionT ...

  10. SMMU中stage1 和stage2 的意思

    ARM SMMU(System Memory Management Unit)是一种用于ARM架构的内存管理单元,它支持两阶段的地址转换机制,即Stage 1和Stage 2.这种机制允许操作系统和虚 ...