ブループリントクラスをNewする
カスタムブループリントクラスがNewできない
Actorクラスを継承していれば、SpawnActor From Classで動的に生成できるが、処理だけを描いたカスタムブループリントをブループリント内で動的に作成したい。
ソースコードで記述すると以下のような書き方でカスタムブループリントクラスをNewしたい。
BP_Object bp = new BP_Object();
AnswerHubにそれらしき対応方法を見つけたので試してみた
Instantiating Instance of Blueprint Class
https://answers.unrealengine.com/questions/206017/instantiating-instance-of-blueprint-class.html
Blueprint Node: Create Object from Blueprint
https://wiki.unrealengine.com/Blueprint_Node:_Create_Object_from_Blueprint
ObjectクラスをNewするC++ BlueprintFunctionを作成する
Show All Classes -> BlueprintFunctionLibraryを選択 -> Next
BPCreator.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "Kismet/BlueprintFunctionLibrary.h"
#include "BPCreator.generated.h"
/**
*
*/
UCLASS()
class BP_CPP_API UBPCreator : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable, Category = "Object")
static void Create(UClass *ObjectClass, UObject* &CreatedObject);
};
BPCreator.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "BP_CPP.h"
#include "BPCreator.h"
void UBPCreator::Create(UClass *ObjectClass, UObject* &CreatedObject)
{
//NewNode = new ObjectType();
CreatedObject = NewObject<UObject>((UObject*)GetTransientPackage(), ObjectClass);
}
ブループリント:BP_Objectを作成する
変数を追加する
変数名 | 変数の型 | デフォルト値 |
---|---|---|
Name | String | CustomBPClass |