美文网首页
动态实例化蓝图对象

动态实例化蓝图对象

作者: Vic_Boss | 来源:发表于2016-10-31 10:12 被阅读0次

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

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

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

    只需要加入如下代码:

    
    static ConstructorHelpers::FObjectFinder<UClass> MyHandle(TEXT("Class'/Game/MyBlueprint/BP_Handle.BP_Handle_C'"));
    
    if (MyHandle.Object)
    {
      TSubclassOf<AMyHTCHandle> MyBPHandle = (UClass*)MyHandle.Object;
      GetWorld()->SpawnActor<AMyHTCHandle>(MyBPHandle , FVector(0), FRotator(0));
    }
    
    

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

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

    相关文章

      网友评论

          本文标题:动态实例化蓝图对象

          本文链接:https://www.haomeiwen.com/subject/cnzuuttx.html