Cdo
Unreal Engine Class Default Object (CDO)
개념
언리얼에서 오브젝트 하나가 만들어질 때의 과정은 아래와 같다.
- 실제 컴파일전에 UHT(Unreal Header Tool)가 헤더 파일 분석.
- 이 과정이 완료되면 언리얼 오브젝트 정보를 담은 메타 파일이 생성.
이 메타정보는 UClass를 통해 보관된다. 이는 언리얼 상에서의 모든 클래스 계층 구조 정보, 멤버 변수, 함수 등의 정보를 포함한다.
컴파일 시에 생성 된 UClass는 실행 초기 (런타임)에 언리얼 오브젝트마다 클래스 정보와 함께 인스턴스가 생성된다. 이 인스턴스는 언리얼 오브젝트의 기본 데이터 지정에 쓰이며, 이를 CDO라고 한다.
동작 방식
CDO를 만드는 이유는 오브젝트를 생성할 때마다 초기화 시킬 필요 없이, 미리 기본 인스턴스를 만들어둬 해당 인스턴스를 복제하기 위함이다. 간단히 말해 런타임에서 오브젝트를 계속 만들어 내는것 보다 객체를 왕창 복제해두고 값만 바꾸는것이 효율적이기 때문이다.
언리얼 오브젝트의 생성자는 인스턴스를 초기화해 Class Default Object를 제작하기 위한 목적으로 사용된다. 이 생성자 코드는 초기화에서만 실행되고, 실제 게임 플레이에서 생성자 코드는 사용할 일이 없다.
아래의 순서로 실행된다.
- 모듈 로딩
- 모듈에 속한 모든 UObject의 클래스 정보 등록
- 각 클래스 정보의 CDO 객체 생성
- 언리얼 오브젝트의 생성자를 호출해 CDO 완성
실제로 생성자에 브레이크 포인트를 걸고 에디터를 켜면, 에디터 창이 켜지기 전에 브레이크가 걸린다.