에셋 지정을 하는 방식은 두 가지이다
1) 오브젝트 패스를 이용
언리얼은 애셋의 고유한 키 값으로 경로 값을 사용한다
애셋을 클릭하고 Ctrl + C 하면 오브젝트 패스를 얻을 수 있고
{오브젝트 타입}'{폴더명}/{파일명}.{에셋명}' 의 형식을 가진다
이를 ConstructorHelpers의 기능을 이용해 오브젝트를 찾게 하고
SetStaticMesh와 같은 함수로 에셋 설정이 가능하다
하지만
아트팀에서 해당 에셋을 수시로 변경하고 이동시키는 경우가 많기에
해당 방법은 안전하지 않은 방법이다
// STorch.cpp
...
ASTorch::ASTorch()
{
...
BodyStaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BodyStaticMeshComponent"));
BodyStaticMeshComponent->SetupAttachment(GetRootComponent());
BodyStaticMeshComponent->SetRelativeLocation(FVector(0.f, 0.f, -30.f));
static ConstructorHelpers::FObjectFinder<UStaticMesh> BodyStaticMesh(TEXT("/Script/Engine.StaticMesh'/Game/StarterContent/Architecture/Pillar_50x500.Pillar_50x500'"));
// 경로 정보가 플레이 중에는 변경되지 않으므로, static 키워드 사용.
if (true == BodyStaticMesh.Succeeded())
{
BodyStaticMeshComponent->SetStaticMesh(BodyStaticMesh.Object);
}
...
ParticleSystemComponent = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("ParticleSystemComponent"));
ParticleSystemComponent->SetupAttachment(GetRootComponent());
ParticleSystemComponent->SetRelativeLocation(FVector(0.f, 0.f, 500.f));
static ConstructorHelpers::FObjectFinder<UParticleSystem> ParticleTemplate(TEXT("/Script/Engine.ParticleSystem'/Game/StarterContent/Particles/P_Fire.P_Fire'"));
if (true == ParticleTemplate.Succeeded())
{
ParticleSystemComponent->SetTemplate(ParticleTemplate.Object);
}
}
2) 블루프린트에서 직접 설정
아트팀에서 해당 에셋을 수시로 변경하고 이동시키는 경우가 많기에
1번 방법은 좋지 않으므로
직접 블루프린트에서 설정해 주는 것이 좋다
하지만 해당 방식은
에셋의 위치가 변경될 때마다
Fix Up Redirectors를 눌러줘서 업데이트를 시켜줘야 한다
'게임 엔진 > [코드조선] 언리얼' 카테고리의 다른 글
언리얼 게임 플레이 프레임워크 - 기본 구성 (0) | 2024.05.12 |
---|---|
언리얼 Actor - 주요 이벤트 함수 (0) | 2024.05.11 |
언리얼 Actor - UPROPERTY()의 Specifier (0) | 2024.05.11 |
언리얼 Actor - 언리얼 C++ 자료형 (0) | 2024.05.11 |
언리얼 Actor - Actor 클래스 생성 및 내부 구조 (0) | 2024.05.11 |