动态实例化蓝图对象

有时候我们用C++定义了一个对象的类,而其他人员又可能在此类之上创建了蓝图类并进行了修改,那么如何在运行时获取到那个蓝图子类,又如何创建对象呢?

假定我们有个基类叫 MyHTCHandle ,基于此创建的蓝图类为 BP_Handle ,在这个蓝图类里可能会有其他设计人员进行了修改。

我们可以使用 ConstructorHelpers::FObjectFinder 来获取蓝图的类,从而使用 SpawnActor 创建 Actor ;

只需要加入如下代码:


static ConstructorHelpers::FObjectFinder MyHandle(TEXT("Class'/Game/MyBlueprint/BP_Handle.BP_Handle_C'"));

if (MyHandle.Object)
{
  TSubclassOf MyBPHandle = (UClass*)MyHandle.Object;
  GetWorld()->SpawnActor(MyBPHandle , FVector(0), FRotator(0));
}

其中, ConstructorHelpers::FObjectFinder 只能用于构造函数中。

关于这句 Class'/Game/MyBlueprint/BP_Handle.BP_Handle_C' ,可以在编辑器中找到该蓝图类,然后使用右键复制引用,
当然这时候得到的字符串 Blueprint'/Game/MyBlueprint/BP_Handle.BP_Handle' 其实指向的是蓝图类,如果要使用到它在C++中的类型就要稍微修改一下。

你可能感兴趣的:(动态实例化蓝图对象)