UE4 C++ UObject实例化

需求:实例化创建自己新建的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	MySubclassObject = UMyObject::StaticClass();	//TSubclassOf<基类>:新建子类
																			//MySubclassObject:新建子类的名称
																			//StaticClass:可以引用外部类的static变量与static的方法
	//MyObjectInstance = NewObject();	根据MyObject类实例化一个NewObject,并赋值给变量“MyObjectInstance”
	MyObjectInstance = NewObject(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(继承的变量值)
	}
}

你可能感兴趣的:(C++,ue4,c++)