首页 > 编程语言 >UE4 C++ 杂

UE4 C++ 杂

时间:2024-05-04 16:44:06浏览次数:16  
标签:GetClass StaticClass 蓝图 UClass C++ 获取 UE4

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

标签:GetClass,StaticClass,蓝图,UClass,C++,获取,UE4
From: https://www.cnblogs.com/XTG111/p/18171199

相关文章

  • c++继承两个类怎么实现
    在C++中,继承两个类可以通过多重继承来实现。多重继承允许一个派生类从多个基类继承属性和方法。以下是一个继承两个类的示例:#include<iostream>//第一个基类classBase1{public:voidmethod1(){std::cout<<"Base1method1"<<std::endl;}};//......
  • 有关c++STL容器及头文件
    万能头打遍天下无敌手(除了vjudge)#include<bits/stdc++.h>通用函数(在以下STL容器中均适用)size返回容器的实际长度(元素个数)empty返回一个bool型,表示容器是非为空vector声明:vector<int>头文件:Here#include<vector>一些函数:clear清空迭代器与b......
  • 提高安全性,优雅实现拷贝与交换:C++中的Copy-and-Swap惯用法
     概述:拷贝并交换(Copy-and-Swap)是C++编程中的惯用法,用于实现赋值操作符和确保异常安全的拷贝构造函数。其核心思想是通过拷贝构造函数创建临时副本,再通过交换确保操作的异常安全性。这种方法在C++11之前和之后都适用,但在C++11中,移动语义和右值引用的引入使得实现可以更加高效。......
  • 高效遍历:C++中分隔字符串单词的3种方法详解与实例
     概述:在C++中,遍历由空格分隔的字符串的单词有多种方法,包括使用`std::istringstream`、手动遍历字符和正则表达式。其中,`std::istringstream`是简单高效的选择,通过流提取单词。手动遍历字符较为繁琐,正则表达式方法更灵活但可能有性能开销。根据实际需求选择方法,本文提供了清晰......
  • 《Effective C++》第三版-4. 设计与声明(Design and Declarations)
    目录条款17:让接口容易被正确使用,不易被误用(Makeinterfaceseasytousecorrectlyandhardtouseincorrectly)限制类型和值规定能做和不能做的事提供行为一致的接口条款19:设计class犹如设计type(Treatclassdesignastypedesign)条款20:宁以pass-by-reference-to-const替换pass......
  • linux环境和vim能够编辑c/c++
    一、准备Linux环境整体安装和使用教程按照 http://why.ink:8080/ICS/2023/这个来进行讲的很全面linux安装软件,有些软件安装起来真的是问题重重,我认为这是linux的问题,而且还会遇到bug,从软件易用性上来看,是不如windows,但从开发角度来说倒是linux更好用一些Linux安装准备:1、......
  • C++基于范围的for循环优劣
    C++的范围基for循环是对这些更传统循环方式的一种抽象,使得代码更简洁,更容易阅读和维护,同时减少了出错的机会,特别是在涉及复杂数据结构时。如我某个工程中的一个代码段:QDateTimetime=QDateTime::currentDateTime();for(constQPair<QString,QDateTime>&record:me......
  • 使用 Visual C++ 的 Office 自动化
    摘要本文解答了有关从VisualC++自动化到MicrosoftOffice的常见问题。更多信息目录什么是自动化?我不熟悉自动化,在哪里可以找到要了解详细信息的好资源?是否有其他方法可以使用自动化?什么是COM? 如何实现附加到正在运行的Office应用程序实例?如何实现传......
  • C++重写
    数组DiscoveredTileIndexed和DiscoveredTileSortingCosts这两个数组是用来存储遍历的方格的,DiscoveredTileSortingCosts存储的是每个方格的消耗,DiscoveredTileIndexed存储的是每个方格的位置即(x,y)。DiscoveredTileSortingCosts中的消耗和DiscoveredTileIndexed位置是一一对......
  • C++指针与引用(Pointers OR References)
    一、PointersPointer是指针,可以用来指向任何一个objects,包括一般变量:1inti=3;2int*pi=&i;3cout<<pi<<endl;//0x0064FDF04cout<<*pi<<endl;//3此时pi本身内含i的地址,要取出pi所指向的object,可以使用*运算符(dereferenceoperator).Pointer......