언리얼 오브젝트의 특징과 리플렉션 시스템
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 인스턴스에 대한 유형을 구할 수 있습니다
참조
'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 |