需求:实例化创建自己新建的MyObject,并获取MyObject中的参数
1.新建Object,在.h创建一个公共变量
class 工程名称_API A工程名称+类名 : public UObject
{
GENERATED_BODY()
public: //注意一定要公开变量,否则继承的Object无法继承该变量
int32 AA= 22;
};
2.接着在其他的文件编写
.h
#include "MyObject.h" //引用MyObject.h文件,才能引用到MyObject类里面的内容
UCLASS()
class 工程名称_API A工程名称+类名 : public A基类名
{
//新建一个指针变量用来存储实例化创建的UObject,类型为:MyObject,变量名称为:MyObjectInstance
UPROPERTY()
UMyObject* MyObjectInstance;
}
.cpp
void Avoid A工程名称+类名::BeginPlay()
{
Super::BeginPlay();
//UObject的实例化
TSubclassOf<UMyObject> MySubclassObject = UMyObject::StaticClass(); //TSubclassOf<基类>:新建子类
//MySubclassObject:新建子类的名称
//StaticClass:可以引用外部类的static变量与static的方法
//MyObjectInstance = NewObject<UMyObject>(); 根据MyObject类实例化一个NewObject,并赋值给变量“MyObjectInstance”
MyObjectInstance = NewObject<UMyObject>(GetWorld(),MySubclassObject); //根据新建的子类实例化一个NewObject,并赋值给变量“MyObjectInstance”
//判断MyObject是否实例化创建成功
if (MyObjectInstance)
{
UE_LOG(LogTemp, Warning, TEXT("My NewObject is %s"),*MyObjectInstance->GetName()); //成功打印日志LogTemp: Warning: My NewObject is MyObject_0
UE_LOG(LogTemp, Warning, TEXT("My NewObject's AA is %d"),MyObjectInstance->AA); //成功打印日志LogTemp:My NewObject's AA is 22(继承的变量值)
}
}