프로그래밍/UnrealEngine4

UE4 객체 생성

ZenoAhn 2017. 1. 2. 20:50

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)));

}

}