아래는 언리얼 엔진에서 UClass와 CDO(Class Default Object)의 차이와 역할을 비교한 설명입니다.
목차
ToggleUClass vs CDO 비교
구분 | UClass | CDO (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는 언리얼 엔진의 오브젝트 시스템에서 서로 다른 역할을 하며, 함께 동작하여 클래스와 인스턴스의 기본값 관리를 효율적으로 처리합니다.