Unreal Engine

18. 언리얼 엔진의 CDO

CE : 하랑 2026. 3. 22. 13:49

클래스 기본 객체 (CDO)

컴파일 단계에서 언리얼 오브젝트 마다 UClass가 생성된다면,

실행 초기의 런타임 과정에서는 언리얼 오브젝트마다 클래스 정보와 함께 언리얼 오브젝트 인스턴스가 생성됩니다.

이 특별한 인스턴스는 언리얼 오브젝트의 기본 세팅을 지정하는데 사용하는데,

이를 클래스 기본 객체(Class Default Object) 줄여서 CDO라고 합니다.

 

(1) 언리얼 엔진에서 CDO를 만드는 이유

언리얼 오브젝트를 생성할 때마다 매번 초기화 하지말고

기본 인스턴스를 미리 만들어 놓고 복제하는 방식으로 메커니즘이 구성이 되있기 때문입니다.

(아마 오브젝트 폴링인거 같습니다.)

 

하나의 언리얼 오브젝트가, 작을경우에는 매우 상관이 없지만, 엉청 커져버리면 초기화 생성 작업이 매우 비용이 많이 들기 때문입니다.

 

그래서 큰 기본 객체 덩어리를 복제한 후 속성 값만 변경하는 방법을 사용

 

(2) CDO 과정

- 언리얼 오브젝트는 언리얼 엔진에서 항상 모듈 단위로 관리

 

언리얼 에디터를 띄우면 초기화라는 문구 옆에 %가 증가하는 것을 볼 수 있는데,

대부분의 과정이 에디터에 사용할 모듈들을 로딩하는데에 사용됩니다.

또한, 생성자에 굳이 constructHelpers를 사용하는 이유

만약 begin이나 다른곳에 만들어서 사용하면
언리얼 에셋은 경로를 지정해서 불러오는 작업을 하는데 만약 에셋경로가 잘못되거나 컴포넌트가 잘못 붙혀지기라도 하면
실행중에 펑 터지는 결과를 얻을수 있어 미리 CDO를 생성해 생성자를 호출하고 초기화를 하는 작업을 통해 맞는 경로인지 확인하고 맞다면 정상적으로 동작하게 하는 안전성도 있습니다.

 


 

언리얼 엔진의 CDO 로딩 과정

(1) 언리얼 엔진에서의 C++ 상에 생성자는 constructHelpers라는 키워드를 사용하여 애셋이나 컴포넌트 등을 불러올수가 있고 붙힐수도 있습니다.

(2) UClass에는 언리얼 오브젝트에 대한 클래스 계층 구조 정보와 맴버 변수, 함수에 대한 정보를 모두 기록

 

(3) 과정

- 언리얼 엔진은 하나의 오브젝트가 만들어지기 위해서는, 실제 컴파일 전에 언리얼 헤더 툴에 의해 헤더 파일을 분석하는 과정이 선행됩니다.

 

-> 이 과정이 완료되면 Intermediate 폴더에 언리얼 오브젝트의 정보를 담은 메타 파일이 생성이 됩니다.

이유 ? C++문법에서 제공하지 못하는 런타임에서의 빠른 클래스 정보의 검색을 하기위해 있습니다.

 

-> 메타 정보는 언리얼 엔진이 지정한 UClass라는 특별한 클래스를 통해 보관됩니다.

 

런타임에서 특정 클래스를 검색해 형(Type)을 알아내
인스턴스 맴버 변수 값을 변경하거나 특정 인스턴스의 맴버 함수를 호출하는 것이 가능합니다.

 

이러한 기능을 리플렉션이라고 부르며 C++에서는 제공을 안해주지만 언리얼 엔진 자체적으로 프레임 워크를 만들어 제공합니다.

'Unreal Engine' 카테고리의 다른 글

20. include "CoreMinimal.h"  (0) 2026.03.22
19. 리플렉션  (0) 2026.03.22
17. FName, FText, FString  (0) 2026.03.15
16. UClass VS TSubclassOf  (0) 2026.03.15
15. 게임 모드  (1) 2026.03.15