언리얼 CDO란 무엇인가?
언리얼을 컴파일 하는 타임에 클래스의 메타 데이터가 UCLASS에 담긴다. 이는 런타임의 클래스의 타입의 빠른 체크와 검색을 위함이다. 언리얼 실행 초기에 언리얼 오브젝트마다 클래스 정보와 언리얼 오브젝트의 인스턴스가 생성된다.이 인스턴스를 CDO라고 한다. CDO는 언리얼 오브젝트의 기본 세팅을 가지고 있는 일종의 템플릿이다. CDO 사용시 이점, 특징은 다음과 같다.
- 언리얼 엔진은 클래스의 모든 인스턴스에 대해 동일한 기본 값을 저장하는 대신 CDO에 한번만 저장한다. 인스턴스 생성시 기본값은 CDO를 참조하면 되기에 초기화 비용에서 이점을 누릴 수 있다.
- 모든 오브젝트가 동일한 기본 값 설정을 가지게 되므로 일관성이 생긴다.
- 클래스의 기본 속성을 변경하려는 경우 CDO의 기본 값을 변경하면 모든 인스턴스에 대해 전역적으로 값을 적용시킬 수 있다.
- 예시 : ACharacter라는 언리얼 클래스가 있다면, ACharacter 객체가 가지고 있는 고유의 Health, Damage등의 속성은 CDO에 보관된다. 생성되는 모든 ACharacter는 CDO에 지정된 기본값을 사용하게 된다.
엔진 코드에서 CDO를 사용하여 코드를 작성한 사례
AActor* UWorld::SpawnActor에서는 Actor를 생성하기 전에 CDO를 참조하여 parameter로 넘겨준다. 내부에서는 CDO를 참조하여 재사용 가능한 객체인지 판단하고 메모리 할당후 객체를 초기화한다.