언리얼엔진5/[Part1] 이득우의 언리얼 프로그래밍

[이득우의 언리얼 프로그래밍 Part1 필기] 4. 언리얼 오브젝트 기초

Rocketbabydolls 2024. 2. 8. 19:33

 

 

 

 

 

성능을 위해서 C++ 을 버릴 수 없기 때문에 C++의 매크로 기능을 활용해서 모던, 객체지향 언어들이 가지고 있는 기능을 언리얼 엔진 자체적으로 구현했다.

일반 C++ 오브젝트는 접두사 F

언리얼 오브젝트는 접두사 U 

 

 

 

 

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "MyObject.generated.h"


/**
 * 
 */
UCLASS()
class UNREALOBJECT_API UMyObject : public UObject
{
	GENERATED_BODY()
	
};

 

#include "MyObject.generated.h" 는 build->win64->unrealeditor->inc->unrealobject->UHT 폴더에 존재한다. 이렇게 복잡한 경로에 존재하는 이유는 건들지 말라는 것.

빌드 중에 UHT 에서 자동으로 생성하며

추가되는 헤더파일은 generated.h 위에 위치해야 한다. 

-> 해당 헤더파일에서 해당 클래스가 다른 클래스나 구조체에 의존하는 경우 종속성을 먼저 포함한 뒤, 컴파일러가 모든 필요한 정의를 인식하고 매크로를 사용하여 해당 클래스의 구조를 정의하고 메타데이터를 생성하기 때문에

 

그리고 또한 아래와 같은 역할도 한다.

 

  1. 리플렉션 시스템의 지원
  2. UCLASS / USTRUCT / UENUM 등의 매크로 처리
  3. 자동 생성된 코드 포함

 

GENERATED_BODY 라는 것은 Generated.h 헤더 파일에 있는 매크로를 사용한다는 것이다.  

언리얼 오브젝트


언리얼 헤더 툴에 의해 소스코드를 자동으로 생성하고, 생성된 코드를 포함해서 최종 빌드를 진행하는 두 단계 과정으로 이루어진다.