본문 바로가기

프로그래밍/언리얼

클래스 기본 객체(CDO)

언리얼 엔진이 컴파일 전에 먼저 메타 소스 파일과 헤더 파일을 생성하는 목적은 여러가지가 있지만 기존의 C++ 문법에서 제공하지 못하는 런타임에서의 빠른 클래스 정보의 검색이다

 

이 메타 정보는 언리얼 엔진이 지정한  UClass라는 클래스를 통해 보관된다

UClass에는 언리얼 오브젝트에 대한 클래스 계층 구조 정보멤버 변수, 함수에 대한 정보를 모두 기록하고 있다

 

단순히 검색하는 것이 아니라, 런타임에서 특정 클래스를 검색해 형(Type)을 알아내 

인스턴스의 멤버 변수 값을 변경하거나

특정 인스턴스의 멤버 함수를 호출하는 것이 가능하다

 

컴파일 단계에서

언리얼 오브젝트마다 UClass가 생성된다면

 

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

 

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

이를 클래스 기본 객체(Class Default Object), CDO라고 한다

 

CDO를 만드는 이유는

언리얼 오브젝트를 생성할 때마다 매번 초기화 시키지 않고,

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

 

하나의 언리얼 오브젝트에 생성되는 두 객체 UClass와 CDO

 

언리얼 오브젝트의 생성자는

인스턴스를 초기화해 CDO를 제작하기 위한 목적으로 사용된다

생성자 코드는 초기화에서만 실행되고 실제 게임 플레이에서는 생성자 코드를 사용할 일이 없다고 보면 된다