본문 바로가기

Unreal

UE C++ 리플렉션

언리얼 오브젝트의 특징과 리플렉션 시스템

 

Reflection(Property System)

프로그램이 실행시간에 자기 자신을 조사하는 기능입니다.
언리얼 엔진의 리플렉션 시스템은 실행 시간(Runtime)에 객체들의 타입 정보를 동적으로 조회하고 조작할 수 있게 해줍니다. 이 시스템은 C++ 언어의 정적 타입 시스템을 보완하여, 런타임 환경에서 객체의 속성, 함수, 메타 데이터 등에 접근할 수 있는 방법을 제공합니다.

 

 

언리얼 오브젝트의 구성

  • 언리얼 오브젝트에는 특별한 프로퍼티와 함수를 지정할 수 있습니다.
    • 관리되는 클래스 멤버 변수 : UPROPERTY
    • 관리되는 클래스 멤버 함수 : UFUNCTION
    • 에디터와 연동되는 메타데이터를 심을 수 있습니다.
  • 모든 언리얼 오브젝트는 클래스 정보와 함께 합니다.
    • 클래스를 사용해 자신이 가진 프로퍼티와 함수 정보를 컴파일 타임과 런타임에서 조회할 수 있습니다.
  • 이렇게 다양한 기능을 제공하는 언리얼 오브젝트는 NewObject API를 사용해 생성해야 합니다.

 

언리얼 오브젝트의 클래스 기본 오브젝트

  • 언리얼 클래스 정보에는 클래스 기본 오브젝트(Class Default Object)가 함께 포함되어 있습니다
  • 클래스 기본 오브젝트는 줄여서 CDO라고 부릅니다.
  • CDO는 언리얼 객체가 가진 기본 값을 보관하는 템플릿 객체입니다.
  • 한 클래스로부터 다수의 물체를 생성해 게임 콘텐츠에 배치할 때 일관성 있게 기본 값을 조정하는데 유용하게 사용됩니다.
  • CDO는 클래스 정보로부터 GetDefaultObject 함수를 통해 얻을 수 있습니다.
  • UClass 및 CDO 엔진 초기화 과정에서 생성되므로 콘텐츠 제작에서 안심하고 사용 가능합니다.

 

CDO

특정 클래스의 기본 설정을 나타내는 객체입니다.
게임 오브젝트나 액터 등의 다양한 언리얼 클래스에서 사용되며, 코드나 블루프린트에서 이 클래스의 기본 동작을 구성하는 데 중요한 역할을 합니다.

 

 

CDO의 생성 시점

엔진이 초기화되는 과정에서 ClassDefaultObject와 UClass 정보들이 만들어집니다.
이것들이 온전히 만들어진 다음에 게임이나 어플리케이션들이 가동됩니다.

 

 

Reflection System 작동 방식

Unreal Build Tool (UBT) 와 Unreal Header Tool (UHT) 가 함께하여
실행시간 리플렉션을 강화시키는 데 필요한 데이터를 생성합니다.

UTypeName::StaticClass() 나 FTypeName::StaticStruct() 를 작성하여 리플렉션된 C++ 유형에 대한 UClass 또는 UScriptStruct 를 구할 수 있으며, Instance->GetClass() 를 사용해서 UObejct 인스턴스에 대한 유형을 구할 수 있습니다

 

 

참조

 

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해 | 이득우 - 인프런

이득우 | 대기업 현업자들이 수강하는 언리얼 C++ 프로그래밍 전문 과정입니다. 언리얼 엔진 프로그래머라면 게임 개발전에 반드시 알아야 하는 언리얼 C++ 기초에 대해 알려드립니다., [사진] 언

www.inflearn.com

 

'Unreal' 카테고리의 다른 글

UE 에디터 - White Boxing  (0) 2024.08.10
UE 캐릭터 컨트롤 설정  (0) 2024.06.28
UE 캐릭터 입력 시스템  (0) 2024.06.15
UE 액터 컴포넌트  (1) 2024.06.08
UE C++ 빌드 시스템  (0) 2024.06.01