언리얼 오브젝트(UObject)
언리얼 오브젝트는 언리얼 엔진의 관리를 받는 특수한 객체입니다.
그렇다고 모든 클래서가 UObject가 되어야 하는 것은 아니며 필요에 따라서 네이티브 클래스를 사용할 수 있습니다.
언리얼 엔진에서는 클래스를 구분하기 위해 접두사를 사용하고 있습니다.
- 일반 C++ 오브젝트 : F로 시작
- 언리얼 오브젝트(UObject) : U로 시작
- Actor 오브젝트 : A로 시작
언리얼 오브젝트는 언리얼 엔진 내에서 객체를 쉽고 효율적으로 관리하기 위해 고안되었습니다.
일반 C++ 객체가 언리얼 오브젝트로 될 경우 다음의 기능들이 자동으로 향상됩니다.
1. CDO(Class Default Object) : 객체의 초기 값을 자체적으로 관리합니다.
2. Reflection : 객체 정보를 런타임에서 실시간 조회가 가능합니다.
3. GC(Garbage Collection) : 참조되지 않는 객체를 메모리에서 자동 해제할 수 있습니다.
4. Serialization : 객체와 속성 정보를 통으로 안전하게 보관하고 로딩합니다.
5. Delegate : 함수를 묶어서 효과적으로 관리하고 호출할 수 있습니다.
6. Replication : 네트워크 상에서 객체간에 동기화를 시킬 수 있습니다.
7. Editor Integration : 언리얼 에디터 인터페이스를 통해 값을 편집할 수 있습니다.
이러한 추가 기능들은 언리얼 헤더 툴(UHT)이 언리얼 프로젝트 빌드를 수행하며 원본 소스 코드 이외에 메타 정보(Intermediate 폴더)들을 추가로 생성하여 빌드합니다.
언리얼 엔진 헤더 파일들을 보면 다음과 같이 ".generated.h"파일들이 바로 메타 정보를 담고 있습니다.
언리얼 엔진이 컴파일 전에 메타 소스파일과 헤더 파일을 생성하는 이유는 기존의 C++ 문법에서 제공하지 못하는 여러 기능들을 제공하기 위해서입니다.
언리얼 오브젝트의 기능에 대해서는 다음의 글을 참고합니다.
[게임 개발/Unreal Engine 기본] - [UE4] 언리얼 오브젝트의 기능
출처
https://cafe.naver.com/unrealenginekr/13883
'게임 개발 > Unreal Engine 기본' 카테고리의 다른 글
[UE4] 스마트포인터 - TSharedPtr, TWeakPtr, TUniquePtr (0) | 2022.02.09 |
---|---|
[UE4] 문자열 변환 - FName, FText, String (2) | 2022.02.09 |
[UE4] 문자열 다루기 - FName, FText, String (0) | 2022.02.09 |
[UE4] 리플렉션 (0) | 2022.02.08 |
[UE4] CDO (Class Default Object) (1) | 2022.02.06 |