언리얼 오브젝트의 특징과 리플렉션 시스템에 대한 정리와 언리얼 오브젝트의 처리 방식에 대해 이해한 것을 정리하겠습니다.

 

언리얼 오브젝트의 구성

- 언리얼 오브젝트에는 특별한 프로퍼티와 함수를 지정할 수 있습니다.

     - 관리되는 클래스 멤버 변수

     - 관리되는 클래스 멤버 함수

     - 에디터와 연동되는 메타데이터를 심을 수 있습니다. 

- 모든 얼리얼 오브젝트는 클래스 정보와 함께 합니다.

     - 클래스를 사용해 자신이 가진 프로퍼티와 함수 정보를 컴파일 타임과 런타임에서 조회할 수 있습니다.

- 이렇게 다양한 기능을 제공하는 언리얼 오브젝트는 NewObject API를 사용해 생성해야 합니다.(엔진에서 제공하는 동적할당, 자동 메모리 관리) 

 

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

- 언리얼 클래스 정보에는 클래스 기본 오브젝트(Class Default Object)가 함께 포함되어 있습니다.

- 클래스 기본 오브젝트는 줄여서 CDO라고 부릅니다.

- CDO는 언리얼 객체가 가진 기본 값을 보관하는 템플릿 객체입니다.

- 한 클래스로부터 다수의 물체를 생성해 게임 콘텐츠에 배치할 때 일관성 있게 기본 값을 조정하는데 유용하게 사용됩니다.

- CDO는 클래스 정보로부터 GetDefaultObject 함수를 통해 얻을 수 있습니다.

- UClass 및 CDO는 엔진 초기화 과정에서 생성되므로 콘텐츠 제작에서 안심하고 사용할 수 있습니다. 

 

[ 언리얼 C++ 객체 U 및 기타(필수) ]  > ( GetClass(), StaticClass() )>  [ UClass]  > ( GetDefaultObject() ) >  CDO

 

[ 예제를 위한 클래스 생성 1 ]

 

- 어떤 학교에서 학생과 교수가 함께 수업하는 상황의 구현

- 학교 정보는 GameInstance에서 지정 

- 인물 클래스 ( Person )

     - 학생 클래스 ( Student )

     - 선생 클래스 ( Teacher )

 

선생님과 학생에 대한 정보는 인물 클래스로부터 상속받도록 클래스 구조를 만들어보겠습니다.

언리얼 엔진의 리플렉션 시스템을 이용해 학교에 대한 설정만 간단하게 작업했습니다. 

 

rider를 사용해 작성한 코드입니다.
출력 결과

런타임에 얻어 오는 정보와 컴파일 타임에 얻어오는 정보가 일치하는 것을 확인했고, 

에디터 초기화 과정 중 생성자를 통해 CDO 기본값을 초기화한다는 것을 알 수 있었습니다. 

중단점을 걸어두고 에디터를 키면 디버깅이 잡힙니다.

언리얼 오브젝트 시스템 정리

1. 언리얼 오브젝트에는 항상 클래스 정보를 담은 UClass 객체가 매칭되어 있다.

2. UClass로부터 언리얼 오브젝트의 정보를 파악할 수 있습니다.

3. UClass에는 클래스 기본 오브젝트(CDO)가 연결되어 있어 이를 활용해 개발의 생산성을 향상시킬 수 있습니다.

4. 클래스 정보와 CDO는 엔진 초기화 과정에서 생성되므로 게임 개발에서 안전하게 사용 가능합니다.

5. 헤더 정보를 변경하거나 생성자 정보를 변경하면 에디터를 끄고 컴파일 하는 것이 안정적입니다.

 

 

 

 

참고 사이트 (언리얼 문서)

https://www.unrealengine.com/ko/blog/unreal-property-system-reflection

 

언리얼 프로퍼티 시스템 (리플렉션)

리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다. 이는 엄청나게 유용한 데다 언리얼 엔진 테크놀로지의 근간을 이루는 것으로, 에디터의 디테일 패널, 시리얼라

www.unrealengine.com

 

https://docs.unrealengine.com/5.1/ko/unreal-object-handling-in-unreal-engine/

 

언리얼 오브젝트 처리

UObject 시스템의 기능에 대한 개요입니다.

docs.unrealengine.com

 

 

 

+ Recent posts