앞의 예제에서 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개의 인스턴스가 겹쳐서 보일것이다.
'언리얼엔진 > c++클래스 만들어보기' 카테고리의 다른 글
MyPawn에서 키입력 받기 (0) | 2023.10.16 |
---|---|
UE5 GameModeBase (0) | 2023.10.15 |
UE5 빌드 환경 설정 및 컴파일 방법 (0) | 2023.10.14 |
언리얼 C++ StaticMesh컴포넌트 추가하기 (0) | 2023.10.14 |
C++ 퀵스타트 - 액터움직이기 SetActorLocation() (1) | 2023.10.14 |