본문 바로가기

언리얼엔진/c++클래스 만들어보기

언리얼 C++ StaticMesh 추가하기

ClassOnly.cpp
0.00MB
ClassOnly.h
0.00MB

앞의 예제에서 StaticMeshComponent까지 추가했지만 StaticMesh를 레벨에디터에서 추가해줘야 했습니다.

이제 이마저도 C++에서 추가해보겠습니다.

AClassOnly::AClassOnly()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MESH"));
	RootComponent = Mesh;
	ConstructorHelpers::FObjectFinder<UStaticMesh> SM(TEXT("/Game/StarterContent/Shapes/Shape_Sphere.Shape_Sphere"));
	if (SM.Succeeded()) {
		Mesh->SetStaticMesh(SM.Object);
	}
}

추가된 코드는 

ConstructorHelpers::FObjectFinder<UStaticMesh> SM(TEXT("/Game/StarterContent/Shapes/Shape_Sphere.Shape_Sphere"));

입니다.  FObjectFinder는 <>안의 타입을 찾아주는 함수이다. 이름은 길지만 폴더의 쉐이프를 골라 Ctrl-C를 한후 코드위에  Ctrl-V후 /Game이후만 사용하면 된다. ' '등은 다 지워준다.  무조건 /Game부터 시작해야한다. StarterContent안의 Props나 shapes폴더안에 적당할걸 골라서 한다. 혹시 프로젝트만들때 StarterContent를 추가하지 않으신분은 컨텐트드러워 +Add를 누른후 AddFeature클릭후 StarterContent를 추가하시면 된다.  

다음 문장은 StaticMesh 가 잘 로딩 되었다면 Mesh에 적용시키라는 거다. 이런 에러처리를 잘해야 한다.
if (SM.Succeeded()) {
Mesh->SetStaticMesh(SM.Object);
}

저장후 언리얼에서 라이브코딩(컴파일후) 클래스를 끌어다 놓으면 이번에 생긴 컨텐츠는 스태틱메시가 보이고 플레이 해보면 3개의 인스턴스가 겹쳐서 보일것이다.