Uclass vs CDO

아래는 언리얼 엔진에서 UClass와 CDO(Class Default Object)의 차이와 역할을 비교한 설명입니다.


UClass vs CDO 비교

구분UClassCDO (Class Default Object)
정의클래스의 메타 정보와 구조를 담는 언리얼 엔진의 클래스 객체해당 클래스의 기본 템플릿(디폴트) 인스턴스
역할클래스의 속성, 함수, 메타데이터를 관리클래스의 프로퍼티 기본값을 저장하고, 인스턴스 생성 시 참조
생성 시점엔진 초기화 시점에 생성엔진 초기화 시, 클래스 생성자에서 생성
변경 가능읽기 전용(일반적으로 수정 불가)생성 후 변경되지 않음(디폴트 값만 저장)
접근 방법UMyClass::StaticClass() 또는 인스턴스의 GetClass()GetClass()->GetDefaultObject() 또는 에디터에서 직접 접근
용도클래스 타입 정보, 리플렉션, 캐스팅 등인스턴스 생성 시 기본값 복사, 에디터에서 디폴트 값 설정 등

상세 설명

  • UClass
    • 언리얼 엔진에서 클래스의 메타 정보(속성, 함수, 리플렉션 등)를 저장하는 객체입니다.
    • UCLASS 매크로가 붙은 클래스마다 하나의 UClass가 생성됩니다.
    • 런타임에서 클래스 타입 정보를 얻거나, 캐스팅, 리플렉션 등에 사용됩니다.
    • 클래스의 인스턴스를 생성할 때도 UClass 정보가 필요합니다.
    • UMyClass::StaticClass()로 클래스 타입 정보를 얻을 수 있습니다.
  • CDO (Class Default Object)
    • 각 UClass가 가지고 있는 “기본 템플릿” 오브젝트입니다.
    • 클래스 생성자에서 한 번 생성된 후 변경되지 않습니다.
    • 클래스의 프로퍼티 기본값이 저장되어 있으며, 새 인스턴스 생성 시 이 값을 참조해 복사합니다.
    • 에디터에서 프로퍼티 값을 수정하면 실제로는 CDO의 값이 변경됩니다.
    • GetClass()->GetDefaultObject()로 접근할 수 있습니다.

요약

  • UClass는 클래스의 메타 정보를 담는 객체이고,
  • CDO는 클래스의 기본값을 저장하는 템플릿 인스턴스입니다.
  • 새 인스턴스를 만들 때는 CDO의 값을 참조합니다.
  • UClass와 CDO 모두 읽기 전용으로 취급하는 것이 일반적입니다.

이렇게 UClass와 CDO는 언리얼 엔진의 오브젝트 시스템에서 서로 다른 역할을 하며, 함께 동작하여 클래스와 인스턴스의 기본값 관리를 효율적으로 처리합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Back to top