UE4 객체 생성
Unity에서 Inspector에 prefab등록해서 Instantiate 하던 것처럼
Unreal Engine 4에서도 Detail 패널에 Blueprint를 등록해서 Spawn 하는 방법에 대해서 학습하였습니다.
파티클 시스템을 커스텀하게 만들어 보고 싶었기 때문에 예제를 파티클로 작성하겠습니다.
#include "GameFramework/Actor.h"
#include "ParticleSeed.generated.h"
UCLASS()
class UE4Project_API AParticleSeed : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AParticleSeed();
// Called when the game starts or when spawned
virtual void BeginPlay() override;
// Called every frame
virtual void Tick( float DeltaSeconds ) override;
UPROPERTY(EditAnywhere)
UClass* Element;
UPROPERTY(EditAnywhere)
unsigned int ElementCount = 100;
};
UClass* 타입을 디테일 탭에서 노출시켜 블루프린트를 등록합니다.
UPROPERTY(EditAnywhere)
UClass* Element;
게임이 플레이 될 때 등록된 블루프린트를 생성하고 랜덤하게 위치를 설정해줍니다.
void AParticleSeed::BeginPlay()
{
Super::BeginPlay();
if (Element == nullptr)
{
UE_LOG(LogTemp, Error, TEXT("No Some Class"));
return;
}
while (ElementCount--)
{
AActor* Actor = GetWorld()->SpawnActor(Element);
if (Actor == nullptr)
{
UE_LOG(LogTemp, Error, TEXT("No Actor"));
return;
}
Actor->SetActorLocation(FVector(FMath::FRandRange(0, 100), FMath::FRandRange(0, 100), FMath::FRandRange(0, 100)));
}
}