方式一:
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只能在构造函数里!