TMap中的Find和FindRef
在对蓝图节点
进行C++重写时,发现UE对于TMap的Find有很多方式。
- 首先是基础的Find,其就是返回对象类型的指针,如果不存在于TMap中其会返回nullptr
- 接下来是FindChecked,其返回的是对象类型的引用,并且会在内部检测指针是否为空,如果没有会触发断言
- 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
UGameplayStatics::GetObjectClass
该方法就是UGameplayStatics封装了GetClass,即返回的也是UClass信息,但是如果不存在UClass其会返回nullptr