ue4 动态增删查改 actor,bp

本文详细介绍了在UE4中动态创建Actor的多种方法,包括直接使用C++类、通过蓝图类实例化以及运行时加载蓝图类进行Actor的创建。探讨了在不同场景下创建ATPlayerPawn类Actor的具体实现,并提供了代码示例。

ue4.17


特殊说明:创建bp时,如果bp上随手绑一个cube,那么生成到场景的actor只执行构造不执行beginPlay,原因未知


ATPlayerPawn是c++类

直接动态创建actor

UWorld* const World = GetWorld();
FVector v = FVector(0, 0, 0);
FRotator r = FRotator(0, 0, 0);
if (World)
{
	ATPlayerPawn* Player = World->SpawnActor<ATPlayerPawn>(v, r);	
}


建立一个名为TPlayerPawnBP的蓝图,继承ATPlayerPawn

动态创建方法,3方法基本类似,随便记录下

1 可在运行时使用

FStringAssetReference asset = "Blueprint'/Game/bp/TPlayerPawnBP.TPlayerPawnBP'";
UObject* itemObj = asset.ResolveObject();
UBlueprint* gen = Cast<UBlueprint>(itemObj);
if (gen != NULL)
{
	ATPlayerPawn* spawnActor = GetWorld()->SpawnActor<ATPlayerPawn>(gen->GeneratedClass);
}

2 可在运行时使用

UObject* loadObj = StaticLoadObject(UBlueprint::StaticClass(), NULL, TEXT("Blueprint'/Game/bp/TPlayerPawnBP.TPlayerPawnBP'"));
if (loadObj != nullptr)
{
	UBlueprint* ubp = Cast<UBlueprint>(loadObj);
	AActor* spawnActor = GetWorld()->SpawnActor<AActor>(ubp->GeneratedClass);
}

3 先保存蓝图类,然后运行时创建

.h中定义

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "N") 
TSubclassOf<ATPlayerPawn> doorBPClass;
.cpp构造中

static ConstructorHelpers::FClassFinder<ATPlayerPawn> doorBPClassFinder(TEXT("/Game/bp/TPlayerPawnBP"));
if (doorBPClassFinder.Class != nullptr)
{
	UE_LOG(TLog, Warning, TEXT("NMgrActor Construct doorBP!=null"));
	doorBPClass = doorBPClassFinder.Class;
}
.cpp BeginPlay中

UWorld* const World = GetWorld();
if (World) 
{	
	World->SpawnActor<ATPlayerPawn>(doorBPClass);	
}


4 运行时创建,大体思路都一样,只要找到bp类就行,注意这个路径有个_C

TSubclassOf<ATPlayerPawn> TS = LoadClass<ATPlayerPawn>(NULL,TEXT("Blueprint'/Game/bp/TPlayerPawnBP.TPlayerPawnBP_C'"));
GetWorld()->SpawnActor<ATPlayerPawn>(TS);




转载于:https://www.cnblogs.com/nafio/p/9137065.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值