Static Mesh 및 Material 설정하기

김민수·2025년 1월 21일

언리얼 C++

목록 보기
9/32

1. Static Mesh 및 Material 설정

Item.cpp

#include "Item.h"

AItem::AItem()
{
    // Scene Component를 생성하고 루트로 설정
    SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
    SetRootComponent(SceneRoot);

    // Static Mesh Component를 생성하고 Scene Component에 Attach
    StaticMeshComp = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
    StaticMeshComp->SetupAttachment(SceneRoot);
    
    // Static Mesh를 코드에서 설정
    static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshAsset(TEXT("/Game/Resources/Props/SM_Chair.SM_Chair"));
    if (MeshAsset.Succeeded())
    {
        StaticMeshComp->SetStaticMesh(MeshAsset.Object);
    }

    // Material을 코드에서 설정
    static ConstructorHelpers::FObjectFinder<UMaterial> MaterialAsset(TEXT("/Game/Resources/Materials/M_Metal_Gold.M_Metal_Gold"));
    if (MaterialAsset.Succeeded())
    {
        StaticMeshComp->SetMaterial(0, MaterialAsset.Object);
    }
}

(1) ConstructorHelpers::FObjectFinder<T>

  • 언리얼 엔진에서 특정 리소스를 경로 기반으로 로드하는 클래스
  • 템플릿 타입 <T>를 사용하여 로드할 리소스의 유형(예: UStaticMesh, UMaterial)을 지정한다.

Static Mesh 로드

static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshAsset(TEXT("/Game/Resources/Props/SM_Chair.SM_Chair"));

로드 성공 여부 확인

if (MeshAsset.Succeeded())
{
    StaticMeshComp->SetStaticMesh(MeshAsset.Object);
}
  • Succeeded():
    • 지정된 경로에서 리소스를 성공적으로 찾았는지 확인한다.
    • 성공하면 SetStaticMesh()를 호출해서 Static Mesh를 설정한다.
    • 경로가 잘못되었거나 리소스가 누락되었을 경우, 이후 로직이 실행되지 않는다.

(2) Static Mesh 설정

StaticMeshComp->SetStaticMesh(MeshAsset.Object);
  • SetStaticMesh():
    • MeshAsset에서 로드된 Static Mesh 객체를 Static Mesh Component에 설정한다.
    • 이렇게 설정된 Static Mesh는 게임 세계에서 3D 모델로 표시된다.

(3) Material 설정

static ConstructorHelpers::FObjectFinder<UMaterial> MaterialAsset(TEXT("/Game/Resources/Materials/M_Metal_Gold.M_Metal_Gold"));
if (MaterialAsset.Succeeded())
{
    StaticMeshComp->SetMaterial(0, MaterialAsset.Object);
}
  • SetMaterial(0, MaterialAsset.Object):
    • 첫 번째 Material 슬롯(Index 0)에 MaterialAsset에서 로드된 Material을 설정한다.
    • 여러 Material 슬롯을 가진 Static Mesh의 경우, 다른 슬롯에 추가 Material을 적용하려면 슬롯 Index를 변경한다.

Material 슬롯

  • Static Mesh는 여러 개의 Material 슬롯을 가질 수 있다.
  • 예를 들어, 캐릭터 모델은 몸체와 옷을 다른 Material로 설정할 수 있다.
  • 슬롯 번호(Index)는 Static Mesh의 Material 설정에 따라 다르다.
profile
안녕하세요

0개의 댓글