KoreanFoodie's Study
언리얼 오브젝트 (UObject) 의 이해 본문
언리얼 오브젝트
언리얼 오브젝트는 언리얼 엔진의 관리를 받는 객체이다. 언리얼이 객체를 관리하게 되는 이점은 여러가지가 있는데, 먼저 클래스의 타입체킹을 빠르고 간편하게 할 수 있다는 것, 그리고 가비지 컬렉션을 자동으로 해 주는 것 등이 있겠다.
언리얼 오브젝트는 U 로 시작하고, 일반 C++ 오브젝트는 F 로 시작하는 것을 권장하고 있다.
언리얼 오브젝트의 전체 특징은 다음과 같다 :
- CDO(Class Default Object) : 객체의 초기 값을 자체적으로 관리
- Reflection : 객체 정보를 런타임에서 실시간 조회가 가능
- GC(Garbage Collection) : 참조되지 않는 객체를 메모리에서 자동 해제할 수 있음
- Serialization : 객체와 속성 정보를 통으로 안전하게 보관하고 로딩
- Delegate : 함수를 묶어서 효과적으로 관리하고 호출할 수 있음
- Replication : 네트워크 상에서 객체간에 동기화를 시킬 수 있음
- Editor Integration : 언리얼 에디터 인터페이스를 통해 값을 편집할 수 있음
언리얼 오브젝트는 UPROPERTY 등의 '언리얼 오브젝트를 만들겠다'는 규칙에 맞는 클래스나 함수, 변수들을 UHT(Unreal Header Tool) 이 파싱한 후, 컴파일해 만들어지게 된다.
언리얼 오브젝트의 선언 규칙은 여러가지가 있다.
위에서 맨 마지막에 "클래스이름.generated.h" 를 include 하는 것, UCLASS( ) 접두사를 사용한 것, 클래스 이름을 U로 시작하게 만드는 것(액터는 A, 슬레이트만 S), UObject 를 상속받게 만드는 것, GENERATED_BODY( ) 매크로를 선언한 것이 있다.
MYGAME_API 은 모듈이름이고, 생성자는 추후 CDO 를 생성할 때 한 번 호출된다.
멤버 변수에는 UPROPERTY( ) 를, 멤버 함수에는 UFUNCTION( ) 을 붙여주면 된다. 멤버 변수는 메모리 관리를 자동으로 엔진에서 해주게 되며, 함수의 경우 델리게이트나 리플리케이션 등의 기능을 활용할 수 있게 된다.
UObject 는 Level, World, Engine, GameInstance 등... 모든 녀석들의 기반 클래스가 된다! 😮
'Game Dev > Unreal C++ : Study' 카테고리의 다른 글
언리얼 오브젝트 계층 구조 요약 (Unreal Object Hierarchy) (0) | 2022.03.30 |
---|---|
언리얼 프로퍼티 시스템 : 리플렉션(Reflection) (0) | 2022.03.30 |
언리얼 CDO (Class Default Object) : 클래스 기본 객체 (0) | 2022.03.30 |
언리얼 빌드 시스템 요약 (Unreal Build System) (0) | 2022.03.30 |
언리얼 GetClass 와 StaticClass 의 차이 (3) | 2022.03.30 |