UE4 C++ 杂

news/2024/10/11 2:30:08

TMap中的Find和FindRef

在对蓝图节点

进行C++重写时,发现UE对于TMap的Find有很多方式。

  1. 首先是基础的Find,其就是返回对象类型的指针,如果不存在于TMap中其会返回nullptr
  2. 接下来是FindChecked,其返回的是对象类型的引用,并且会在内部检测指针是否为空,如果没有会触发断言
  3. FindRef 其返回的是对象类型,即会调用构造函数,如果没有那么会通过对象的默认构造函数构造一个返回

UEC++ 中的Class类型的获取

继承于同一C++类的两个蓝图其UClass并不相同
这是由于UClass信息不仅仅是类信息,其实际上是存储的反射信息还包括了序列化等内容。
如果是同一个蓝图的场景中两个不同的Actor其UClass是相同的

GetClass()函数

GetClass()函数用于对一个UObject实例获取其的UClass。

StaticClass()函数

GetClass()只能用于对UObject对象获取其UClass,如果没有UObject实例那么就可以使用StaticClass()来获取,即对于一个类直接使用类名::StaticClass()获取UClass信息可以发现UClass信息是永远一样的。
StaticClass用于判断父类

该类的UClass会存储其父类的StaticClass,可以不断获取父类的StaticClass与要判断的类作比较

在UE中使用IsChildOf来判断某个类是不是另一个类的子类,使用IsA来判断某个实例对象是不是某一类的子类

ClassDefaultObject()

通常可以通过GetClass()->GetDefaultObject()来获取AClass中某个值的默认值,前面已经知道GetClass实际上获取的是UClass信息,所以如果在蓝图中修改了该值,那么不同蓝图得到的值是不一样的,而如果改用StaticClass则所有蓝图获得的都是C++中给定的默认值

UGameplayStatics::GetObjectClass

该方法就是UGameplayStatics封装了GetClass,即返回的也是UClass信息,但是如果不存在UClass其会返回nullptr
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27482.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

在Docker内部使用gdb调试器报错-Operation not permitted

在docker内部使用gdb调试时刻遇到了gdb如下报错信息:warning: Error disabling address space randomization: Operation not permitted原因 地址随机化是linux一项安全特性,它允许内核进程启动每次加载库的时候都在随机化的分布在进程虚拟内存地址空间上(早期固定的库要加载到…

Bash脚本语法解析(典例精讲)

参考资料:https://github.com/AUTOMATIC1111/stable-diffusion-webuihttps://razeen.me/posts/the-ultimate-programmers-guide-to-bash-scripting/众所周知.sh文件是Linux系统中的脚本文件。(与之相对的还有windows系统上对应cmd的bat文件,对应powershell的ps1文件?)因此…

csapp-bomblab(自信满满版)

反汇编bomb文件 要查看机器代码文件的内容,有一类称为反汇编器(disassembler,assembler是汇编程序,dis-加在某些词语前表示相反的意思)的程序非常有用。这些程序根据机器代码产生一种类似于汇编代码的格式。在linux系统中,带‘-d’命令行标志的程序OBJDUMP(表示“object…

Windows系统,在Pycharm里面(python3.9)下载dlib的依赖包的具体步骤

原文作者:传送门 1、进入网址 轮子地址 然后选择这个下载:2、保存到自己的项目里面,然后使用pip的命令下载pip命令如下: pip install dlib-19.23.0-cp39-cp39-win_amd64.whl使用pip list的命令查看已经下载的包: dlib依赖包下载完成!

Python进阶篇笔记

一、面向对象 1、面向过程与面向对象面向过程:把程序流程化 面向对象:把程序抽象成类,类与类之间有联系2、类与对象 对象就是容器,是用来存放数据和功能的,对象就是数据和功能的集合 类的作用是吧对象做区分和归类,以及解决不同对象存相同数据的问题。类也是容器,也是用…

团队作业3—需求改进系统设计

这个作业属于哪个课程 软件工程这个作业要求在哪里 团队作业3—需求改进&系统设计这个作业的目标 1、需求&&原型改进 2、系统设计 3、Alpha任务分配计划 4、测试计划其他参考文献 架构设计、Scrum/Sprint、测试的计划和执行这个作业所属团队 SuperNewCode团队成员 …