Game Develop

언리얼엔진에서의 컴파일 본문

UnrealEngine5/이것저것

언리얼엔진에서의 컴파일

MaxLevel 2022. 9. 22. 06:58

언리얼엔진에서는 C++소스코드를 컴파일할 때, 언리얼 헤터툴에서 헤더파일을 분석하여 클래스의 메타정보를 

UClass라는 특별한 클래스에 저장한다.

메타정보는 대략 언리얼오브젝트의 계층구조정보와 어떤 속성(멤버 변수) 및 함수들이 있는지를 나타낸다.

이 정보는 런타임시에 특정클래스를 검색하고 그 클래스의 속성이나 멤버함수를 호출하는 데 활용될 수 있다.

자바나 C#에서 활용하는 리플렉션기능을 C++에서 사용할 수 있게 하기 위해 언리얼에서 제공하는 형태라고 볼 수 있다.

 

컴파일이 완료되고 언리얼에디터를 실행시키면 UObject를 상속받는 언리얼오브젝트의 생성자에서 인스턴스를 생성하는데, 이를 클래스기본객체, 줄여서 CDO(Class Default Object)라고 지칭한다. 이 CDO는 언리얼오브젝트의 기본설정을 세팅하는데 사용된다.

 

정리하자면 C++클래스를 컴파일하면 먼저 언리얼오브젝트의 정보를 담은 UClass가 만들어지고, 후에 언리얼 에디터를 실행하면 생성자코드를 실행하여 클래스기본객체(CDO)인스턴스를 생성한다.

즉, 표준 C++과는 다르게 언리얼 엔진에서 생성자는 인스턴스를 초기화해 CDO를 만들기 위한 목적이 있다.

엔진에서는 인스턴스들을 생성할 때 매번 초기화시키지 않고 이 CDO들을 복제하여 생성한다.