UObject

jelly·2025년 3월 19일

언리얼 엔진에서 UObject는 모든 객체의 기본 클래스입니다. 즉, 언리얼 엔진에서 대부분의 게임 오브젝트나 시스템 오브젝트는 UObject에서 파생된 클래스로 정의됩니다. UObject는 엔진의 다양한 시스템과 상호작용할 수 있는 기본적인 기능을 제공하는 클래스로, 여러 가지 중요한 역할을 합니다.

주요 특징:
메모리 관리: UObject는 언리얼 엔진의 가비지 컬렉션 시스템과 통합되어 메모리 관리를 자동으로 처리합니다. 즉, UObject를 상속받은 객체는 가비지 컬렉터에 의해 자동으로 메모리에서 해제되므로 개발자가 직접 메모리를 관리할 필요가 줄어듭니다.

시리얼라이제이션: UObject는 시리얼라이즈(저장 및 로딩) 기능을 지원하여 게임 데이터를 디스크에 저장하거나 네트워크를 통해 전송할 때 유용합니다.

디스패치 시스템: UObject는 엔진의 메시지 처리 시스템에 중요한 역할을 합니다. 객체 간의 이벤트 처리 및 메시지 전달을 쉽게 관리할 수 있도록 합니다.

플러그인 및 확장성: UObject를 상속받아 다양한 기능을 구현하고, 게임 엔진에 새로운 종류의 객체나 시스템을 추가할 수 있습니다.

다양한 시스템과 통합: UObject는 언리얼 엔진의 다양한 시스템(예: 네트워크, 애셋 시스템, UI 시스템 등)과 밀접하게 연결되어 있습니다. 이를 통해 다양한 엔진 시스템에서 효율적으로 사용할 수 있습니다.

#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "MyObject.generated.h"

UCLASS()
class MYPROJECT_API UMyObject : public UObject
{
    GENERATED_BODY()

public:
    UMyObject();

    void MyFunction();
};

이 코드에서 UMyObject 클래스는 UObject를 상속받아 정의되며, UCLASS() 매크로로 엔진에 객체 클래스를 등록하고, GENERATED_BODY() 매크로는 엔진의 코드 생성 시스템을 활성화합니다.

결론적으로, UObject는 언리얼 엔진에서 거의 모든 객체가 상속받는 기본 클래스이며, 엔진 내의 중요한 기능과 시스템을 지원하는 핵심 요소입니다.

profile
jelly

0개의 댓글