Class Default Object

2023. 2. 28. 15:12UnrealEngine/개념

UClass에는 모든 언리얼 오브젝트에 대하여 각 클래스 계층 구조 정보, 멤버 변수와 함수에 대한 정보를 모두 기록한다.
리플렉션(프로퍼티 시스템)에서 언리얼 헤더 툴이 클래스에 대한 정보를 수집한다고 하였는데 이렇게 수집된 메타 정보를 UClass에 보관되게 되는 것.

컴파일 단계에서 오브젝트마다 UClass가 생성된다면 런타임 단계에선 오브젝트마다 클래스 정보와 함께 특정 인스턴스가 생성되는데 이것을 Class Default Object(CDO)라고 함.
CDO는 클래스에 대한 기본(디폴트) 정보가 담겨있는 인스턴스로 클래스 생성자를 통해 최초로 한 번만 할당된다.

해당 클래스를 사용한 오브젝트를 생성할 때 마다 클래스를 초기화시키지 않고 CDO를 복제하는 방법을 사용함.
(런타임에서 특정 클래스의 오브젝트를 100개 생성해야 할 때, 100개를 각각 생성하고 초기화 하는 것 보다 기본 객체을 만들어서 해당 객체를 복제하여 값을 변경하는 것이 더 빠름)

 

CDO는 최초 할당 이후 복제해서 사용되기 때문에 런타임 로직을 포함할 수 없다.

그러므로 타 오브젝트에 포함되는 컴포넌트와 같은 서브 오브젝트들은 생성자에서 CreateDefaultSubobject<>()를 사용하여 인스턴스로 생성해줘야 한다.

 

오브젝트가 생성될때 UClass, CDO 2가지 인스턴스가 생성됨

https://blog.naver.com/destiny9720/220934112532

'UnrealEngine > 개념' 카테고리의 다른 글

IK(Inverse Kinematic, 역운동학)  (0) 2023.03.07
Enhanced Input(향상된 입력)  (0) 2023.03.01
Character(=Pawn)의 AddMovementInput()  (0) 2022.09.20
Player Input  (0) 2022.09.13
Actor, Pawn, Character  (0) 2022.09.13