4.25 ver
[내용]
디렉토리에 에셋이 있을경우 가져와서 셋팅하거나 사용하고, 없으면 아무 작업을 하지 않는다.
#include "LoadMeshActor.h"
#include "Components/StaticMeshComponent.h"
#include "Misc/Paths.h"
ALoadMeshActor::ALoadMeshActor()
{
// UStaticMeshComponent 컴포넌트를 생성
Mesh = CreateDefaultSubobject<UStaticMeshComponent>("Mesh");
// RootComponent 를 생성한 Mesh로 설정
RootComponent = Mesh;
}
void ALoadMeshActor::BeginPlay()
{
Super::BeginPlay();
SetMesh();
}
void ALoadMeshActor::SetMesh()
{
// 가져올 에셋 이름
FString str = L"Cube";
// 탐색할 경로
FString filePath = FPaths::Combine(*FPaths::ProjectContentDir(), *FString("StaticMesh/")) + str + L".uasset";
UE_LOG(LogTemp, Log, L"FPaths::ProjectContentDir--------%s", *filePath);
// 에셋이 있는지 검사
if (FPaths::FileExists(filePath) == false)
return;
// 에셋이 있다면 레퍼런스 경로를 FString으로 재조립
FString meshReferece = FString::Printf(L"StaticMesh'/Game/StaticMesh/%s.%s'", *str, *str);
// 레퍼런스 경로를 통해 에셋 로드
UStaticMesh* mesh = LoadObject<UStaticMesh>(NULL, *meshReferece, NULL, LOAD_None, NULL);
// 잘 로드 되었는지 확인
if (mesh != nullptr)
{
UE_LOG(LogTemp, Log, L"Mesh In!!!!");
// 에셋 적용
Mesh->SetStaticMesh(mesh);
}
}
[결과물]
StaticMesh 디렉토리에 Cube가 있다면 메시가 설정됨.
하지만 그림과 같이 Cube를 찾을수 없다면 아무 메시가 할당되지 않음.