언리얼 오브젝트 클래스를
아무것도 상속받지 않고 만들게 되면
일반적으로 아래와 같은 구성을 나타낸다
// SUnrealObjectClass.h
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "SUnrealObjectClass.generated.h"
/**
*
*/
UCLASS()
class STUDYPROJECT_API USUnrealObjectClass : public UObject
{
GENERATED_BODY()
};
// SUnrealObjectClass.cpp
#include "SUnrealObjectClass.h"
- #include “CoreMinimal.h”
UE4 초반 버전에서는 #include “EngineMinimal.h” 구문을 사용했었다
개발에 필요한 대부분의 헤더 파일을 참조하는 파일이다
비교적 최신 UE4와 UE5에서는 IWYU(Include What You Use)에 따라
사용하는 헤더 파일만 참조해서 빌드 속도와 인텔리센스 부하를 줄이는
#include “CoreMinimal.h” 구문을 사용한다
- #Include “UObject/NoExportTypes.h”
이 자리에는 추후 부모 클래스의 헤더 파일을 작성된다
UObject 클래스를 상속받으므로 위 헤더 파일이 작성되었다
- #include “SUnrealObjectClass.generated.h”
UHT을 통해 .h 파일이 .generated.h 파일로 변환된다
소스코드 작성 시점에는 이 파일이 존재하지 않지만,
컴파일 과정에서 무조건 생성된다
따라서 필요로하는 헤더 파일들을 모두 include 한 뒤에 .generated.h 파일을 include하게 된다
- UCLASS() 매크로
언리얼 클래스를 선언하기 전 작성해야 하는 매크로이다
구조체 전에는 USTRUCT(), 공용체 전에는 UENUM() 매크로를 작성한다
- STUDYPROJECT_API
윈도우의 DLL 시스템은
DLL 내 클래스 정보를 외부에 공개할지 말지 결정하는
__declspec(dllexport)라는 키워드를 제공한다
언리얼 엔진에서 이 키워드를 사용하려면,
“모듈명_API” 키워드를 클래스 선언 앞에 추가해야 한다
이 키워드가 없으면 다른 모듈에서 해당 개체에 접근할 수 없다
- 언리얼 오브젝트 클래스 접두사 U
UObject 클래스를 상속 받는 클래스는 접두사 U가 붙는다
- UObject 클래스 상속
언리얼 오브젝트 클래스는 UObject 클래스를 상속받아야 한다
상속받지 않는다면 스마트 포인터를 사용해서라도 메모리 관리를 해야 한다
- GENERATED_BODY() 매크로
주로 클래스의 선언 부분에 사용되며,
해당 클래스가 Unreal Engine의 리플렉션 시스템 및 기타 코드 생성 도구에 의해 처리되어야 함을 나타낸다
해당 매크로를 사용하면,
Unreal Engine의 다양한 기능 및 툴체인에 해당 클래스를 통합할 수 있다
'게임 엔진 > [코드조선] 언리얼' 카테고리의 다른 글
언리얼 기초 - 언리얼 디버깅 (0) | 2024.05.08 |
---|---|
언리얼 기초 - 언리얼 코딩 컨벤션 (0) | 2024.05.08 |
언리얼 기초 - 언리얼 개발 환경 및 레벨 (0) | 2024.05.08 |
언리얼 기초 - 언리얼 시스템 (0) | 2024.05.07 |
언리얼 기초 - 언리얼 에디터 (0) | 2024.05.07 |