언리얼 엔진에서 C++ 클래스를 새로 만들면, 일반적으로 헤더 파일과 구현 파일이 한쌍으로 자동 생성된다.
1. 헤더 파일 코드 분석
1 - 1. 헤더 파일 상단 코드
#pragma once
- 이 헤더 파일이 여러 번 포함되더라도, 컴파일 시 단 한 번만 처리하도록 해주는 지시어이다.
- 과거에는 #ifndef ~ #define ~ #endif 방식을 사용했지만, 대부분의 최신 C++ 프로젝트에서 #pragma once를 권장한다.
#include "CoreMinimal.h"
- 언리얼 엔진에서 자주 사용하는 기본 타입(FString, TArray 등)과 매크로(UE_LOG 등), 각종 유틸 함수들이 정의되어 있다.
#include "GameFramework/Actor.h"
- AActor를 상속받기 위해 필요한 헤더파일이다.
#include "클래스이름.generated.h"
- 언리얼 엔진의 리플렉션 시스템에서 필요한 코드를 자동 생성하기 위한 매크로이다.
1 - 2. 헤더 파일 클래스 선언부 코드 분석
UCLASS()
- 이 클래스를 언리얼 엔진의 리플렉션 시스템에서 인식하도록 하는 매크로이다.
- 언리얼 에디터에서 이 클래스를 블루프린트로 확장할 수 있게 하고, 에디터의 여러 기능과 연동하도록 한다.
class 프로젝트명_API A클래스이름 : public AActor
- AActor를 상속받아 "A클래스이름" 클래스를 정의한다는 의미이다. 여기에선 ATest 클래스를 정의한다.
더보기
접두어
언리얼 엔진에서는 클래스 이름에 접두사를 붙이는 컨벤션이 있다.
- A: Actor
- U: Object
- F: 일반 구조체
- T: 템플릿
- E: 열거형
프로젝트명_API
- 이 클래스를 모듈(여기서는 ProjectJS) 외부로 export하기 위한 매크로이다.
- DLL 등으로 빌드할 때 필요한 선언이다.
GENERATE_BODY()
- UCLASS()와 짝을 이루어, 엔진 리플렉션에 필요한 코드를 자동 생성해 주는 매크로이다.
ATest()
- 생성자.
- Actor 객체가 메모리에 생성될 때 한 번 호출된다.
- 월드에 배치되기 전 단계일 수도 있다.
BeginPlay()
- 액터가 월드에 완전히 배치된 뒤, 게임이 플레이 상태로 시작할 때 한 번 호출된다.
Tick(float DeltaTime)
- 매 프레임마다 자동으로 불린다.
- 주로 매 프레임 단위의 업데이트가 필요한 로직을 넣는다.
1 - 3. 구현 파일 클래스 코드 분석
#include "Item.h"
- .cpp 파일에서는 가장 먼저 짝이 되는 헤더 파일을 포함해야 한다.
- 그렇지 않으면 언리얼의 자동 생성 매크로(리플렉션) 순서가 뒤섞여 컴파일 에러가 날 수 있다.
Actor 라이프사이클 관련 함수 구현부
- 생성자, BeginPlay(), Tick(float DeltaTime)에서 구현 로직을 자유롭게 추가할 수 있다.
'Unreal' 카테고리의 다른 글
언리얼 엔진 Actor의 라이프 사이클 (0) | 2025.01.22 |
---|---|
언리얼에서 컴포넌트란? (0) | 2025.01.22 |
Object와 Actor 차이점 정리 (0) | 2025.01.21 |
C++ Actor 클래스 삭제하는 법 (0) | 2025.01.21 |
Unreal 엔진 빌드 프로세스 (0) | 2025.01.21 |