게임 개발/Unreal Engine 기본

[UE4] CDO (Class Default Object)

지노윈 2022. 2. 6. 18:26
반응형

CDO(Class Default Object)


[게임 개발/Unreal Engine 기본] - [UE4] 언리얼 오브젝트(UObject)

언리얼 오브젝트 글에서 기존 C++이 제공하지 못하는 추가 기능을 제공하기 위해 메타 정보가 자동으로 생성되는 것을 언급하였습니다.

 

메타 정보는 UClass라는 특별한 클래스를 통해 보관됩니다. UClass에는 언리얼 오브젝트에 대한 클래스 구조, 멤버 변수, 멤버 함수에 대한 정보들을 기록합니다. 단순히 검색하는 것에서 더 나아가, 런타임에 특정 클래스를 검색해 타입을 알아내 인스턴스의 멤버 변수 값을 변경하거나 특정 인스턴스의 멤버 함수를 호출하는 것이 가능합니다. Java나 C#에서는 이와 유사한 기능을 리플렉션이라는 이름으로 제공합합니다.

 

모든 언리얼 오브젝트 실행 초기의 런타임 과정에서 다음의 두 가지가 생성됩니다.

  • UClass 인스턴스
  • 언리얼 오브젝트 인스턴스
    # 언리얼 오브젝트의 기본 세팅을 지정하며 이를 클래스 기본 객체(Class Default Object, CDO)라고 합니다.

CDO를 만드는 이유는, 언리얼 오브젝트를 생성할 때마다 매번 초기화 하지않고, 기본 인스턴스를 미리 만들어 놓고 복제해서 사용하기 위함입니다. 덩치가 크거나 복잡한 오브젝트를 매번 생성하는 것보다 복제 후 속성만 변경하여 사용하는 것이 효과적이기 때문입니다.

 

언리얼 오브젝트의 생성자는 인스턴스를 초기화해 CDO를 제작하기 위한 목적으로 사용됩니다. 이 생성자 코드는 초기화에서만 실행되고 실제 게임 플레이에서 생성자 코드는 사용할 일이 없다고 보면 됩니다. 참고로 언리얼 엔진에서 게임 플레이에서 사용할 초기화 함수는 생성자 대신 Init 이나 혹은 BeginPlay 함수를 제공합니다. 

출처 : https://cafe.naver.com/unrealenginekr/13885