UE4-【C++/蓝图】【UE4 C++ SpawnActor创建蓝图对象】

方式一:

UPROPERTY(EditAnywhere)
TSubclassOf<class APickupAndRotateActor> ObjectToSpawn;

FSCPSceneItemsDataStruct scene_item = SCPGAMEINSTANCE(this)->JsonStaticDataManager->SCPSceneItems->GetDataStruct("1001002");
FVector location = FVector(scene_item.LocationX, scene_item.LocationY, scene_item.LocationZ);
FRotator rotation = FRotator(scene_item.RotationX, scene_item.RotationY, scene_item.RotationZ);
AActor* NewActor1 = GetWorld()->SpawnActor(ObjectToSpawn, &location, &rotation);

方式二:

FString path = "/Game/GameRes/Entity/PickUpItem.PickUpItem_C";
TSubclassOf<APickupAndRotateActor> item = TSoftClassPtr<APickupAndRotateActor>(path).LoadSynchronous();
if (item != nullptr)
{
	FSCPSceneItemsDataStruct scene_item = SCPGAMEINSTANCE(this)->JsonStaticDataManager->SCPSceneItems->GetDataStruct("1002002");
	FVector location2 = FVector(scene_item.LocationX, scene_item.LocationY, scene_item.LocationZ);
	FRotator rotation2 = FRotator(scene_item.RotationX, scene_item.RotationY, scene_item.RotationZ);
	AActor* NewActor2 = GetWorld()->SpawnActor(item, &location2, &rotation2);
}

方式三:

UPROPERTY()
UClass* something_object;

ConstructorHelpers::FObjectFinder<UClass> BPFinder(TEXT("Blueprint'/Game/GameRes/Entity/PickUpItem.PickUpItem_C'"));
if (BPFinder.Succeeded())
	something_object = BPFinder.Object;

if (something_object)
{
	FSCPSceneItemsDataStruct scene_item = SCPGAMEINSTANCE(this)->JsonStaticDataManager->SCPSceneItems->GetDataStruct("1002001");
	FVector location3 = FVector(scene_item.LocationX, scene_item.LocationY, scene_item.LocationZ);
	FRotator rotation3 = FRotator(scene_item.RotationX, scene_item.RotationY, scene_item.RotationZ);		
	AActor* NewActor3 = GetWorld()->SpawnActor(something_object, &location3, &rotation3);
}

注意第三种方式的FObjectFinder只能在构造函数里!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值