Actor 클래스 코드
1. 헤더 파일
- #pragma once - 동일 헤더가 프로젝트 곳곳에 여러 번 포함되더라도 한 번만 처리
- #include "CoreMinimal.h" - 언리얼 가장 기본 헤더, 엔진 전역 타입, 메크로, 함수 등을 가져옴(필수 헤더로 거의 모든 .h 파일 맨 위에 있음)
- #include "GameFramework/Actor.h" - AActor 클래스 선언을 사용 가능
- #include "Item.generated.h" - 언리얼 헤더툴이 자동 생성하는 코드를 포함하는 것, 항상 헤더의 마지막 줄에 위치
UCLASS()
class SPARTAPROJECT_API AItem : public AActor
{
GENERATED_BODY()
public:
// 생성자
AItem();
protected:
// 액터가 월드에 스폰 (배치된) 직후 한 번만 호출
virtual void BeginPlay() override;
// 매 프레임마다 호출
virtual void Tick(float DeltaTime) override;
};
- UCLASS() - 리플렉션 시스템에 등록하는 매크로, 에디터에서 이 클래스를 블루프린트로 확장 혹은 여러 기능과 연동
- class SPARTAPROJECT_API AItem : public AActor - AActor 를 상속받아 AItem 클래스를 정의, SPARTAPROJECT_API는 이 클래스 외부에서도 클래스를 사용 가능하게 함
- GENERATED_BODY() - UCLASS() 와 짝을 이루며, 언리얼 헤더툴이 자동 생성한 코드를 삽입해 주는 매크로
#include "Item.h" // 항상 첫 줄에! 자신과 짝이 되는 헤더를 가장 먼저 include해야
// 생성자 구현부
AItem::AItem()
{
PrimaryActorTick.bCanEverTick = true; // (이후 강의에서 배우는 내용)
}
// BeginPlay() 구현부
void AItem::BeginPlay()
{
// 부모 클래스(AActor)의 BeginPlay()를 먼저 호출
Super::BeginPlay();
}
// Tick() 구현부
void AItem::Tick(float DeltaTime)
{
// 부모 클래스(AActor)의 Tick() 먼저 호출
Super::Tick(DeltaTime);
}
Actor 클래스에 컴포넌트 멤버 변수 추가
컴포넌트는 Actor가 어떤 역할 혹은 속성을 가지는 지 결정하는 부품 (Static Mesh Component + Audio Component + Collision Component를 모두 사용해, 충돌 시 소리가 나는 아이템을 만듦)
모든 Actor는 루트 컴포넌트 (Root Component)를 가져야 함
보통 Scene Component를 루트 컴포넌트로 설정하여 액터의 트랜스폼을 관리


- USceneComponent* SceneRoot - SceneRoot는 눈에 보이지 않는 논리적 컴포넌트로, 실제 3D 모델이나 시각 적 요소를 가지지 않음
- UStaticMeshComponent* StaticMeshComp - StaticMeshComp는 Static Mesh (정적 메시)를 렌더링 하는 역할을 함
- CreateDefaultSubobject(TEXT("")) - Unreal Engine에서 컴포넌트를 생성하고 초기화할 때 사용하는 함수, 템플릿 타입으로 생성할 컴포넌트의 유형을 지정
- "StaticMesh" , "SceneRoot" 는 각 컴포넌트의 식별 이름
- TEXT() 매크로는 문자열을 유니코드로 처리하기 위한 것으로, 언리얼 엔진 코 드 표준에서 권장합니다.
- SetRootComponent(SceneRoot) - 루트 컴포넌트를 SceneRoot로 설정, 루트 컴포넌트는 액터의 기본 위치, 회전, 크기를 정의하며, 다른 모든 하위 컴포넌트가 이를 기준으로 동작함
- SetupAttachment(SceneRoot) - StaticMeshComp를 SceneRoot에 부착 (Attach)
- StaticMeshComp는 SceneRoot의 하위 컴포넌트로 동작하며, SceneRoot의 트랜스폼 변화에 따라 움직입니다.

매시와 메터리얼 할당하기

- ConstructorHelpers::FObjectFinder - Unreal Engine에서 특정 리소스를 경로 기반으로 로드하는 클래스
- TEXT("/Game/Resources/Props/SM_Chair.SM_Chair") - 리소스의 경로를 나타냄. 리소스의 경로를 가져오려면 아래와 같이 해당하는 에셋을 우클릭하고 Copy Reference를 해서 붙여 넣기
- 단, /Game 여기서부터만 입력하면 되고, 앞에 경로는 삭제
- /Game 은 Unreal Engine에서 프로젝트의 Content 폴더를 나타냄
- .Succeeded() - 지정된 경로에서 리소스를 성공적으로 찾았는지 확인
- 경로가 잘못되었거나 리소스 파일이 누락된 경우 실패하며, 이후 설정 함수가 호출되지 않음
- SetStaticMesh() , SetMaterial() - 성공적으로 로드된 Static Mesh를 StaticMeshComp에 설정.
- 로드된 Material을 StaticMeshComp의 특정 머티리얼 슬롯에 적용
- 여기 서는 첫 번째 머티리얼 슬롯 (Index 0)에 Material이 설정됨
'언리얼' 카테고리의 다른 글
| 리플렉션/UHT/UBT/CDO (feat. Garbage Collection) (1) | 2026.04.10 |
|---|---|
| 언리얼C++) 액터 라이프사이클 (0) | 2026.04.08 |
| 언리얼C++) 초기 세팅 (0) | 2026.04.06 |
| C++) TRPG 최종 (0) | 2026.04.01 |
| C++) TRPG#04 : 패치 및 수정 (0) | 2026.03.30 |