[UE5] 언리얼 엔진 클래스 체계 분석: UObject, UClass, BlueprintGeneratedClass의 차이와 관계

ChangJin·2024년 11월 12일
0

Unreal Engine5

목록 보기
110/114
post-thumbnail

Unreal Engine에서 UBlueprintGeneratedClass, UClass, UObject는 모두 게임 객체와 관련된 클래스 계층을 구성하며, 각기 다른 역할을 수행합니다. 이들 외에도 다양한 클래스들이 존재하며, 각각의 용도와 특성을 이해하면 언리얼 엔진에서 객체를 생성하고 다루는 데 도움이 됩니다. 이 글에서는 주요 클래스들의 차이점을 설명하고 그 관계와 특성을 비교해보겠습니다.


1. UObject

  • 설명: Unreal Engine의 모든 클래스 계층의 최상위 클래스입니다. 엔진의 모든 클래스는 UObject로부터 파생됩니다.
  • 주요 역할: 객체의 기본적인 속성 및 메모리 관리, 가비지 컬렉션 등을 포함합니다.
  • 사용 목적: 기본적인 객체 생성을 위한 인터페이스를 제공하며, 블루프린트와 C++ 간의 상호작용을 가능하게 합니다.
  • 특징:
    • 직접 인스턴스화할 수는 없으며, NewObject 또는 SpawnActor 함수로 인스턴스화합니다.
    • 게임 데이터 관리, 시스템 간의 정보 전달 등 전반적인 객체 관리를 담당합니다.
    • 모든 UObject 기반 클래스는 Reflection System을 지원하며, 이는 런타임 타입 정보와 에디터에서의 편집 기능을 제공합니다.

2. UClass

  • 설명: UClass는 Unreal의 클래스 메타데이터를 저장하는 클래스로, 클래스 자체에 대한 정보를 담고 있습니다. Unreal의 Reflection System을 통해 클래스의 속성과 함수를 탐색하고 조작할 수 있게 합니다.
  • 주요 역할: 클래스 타입을 정의하고 객체의 생성과 관계없이 해당 타입에 대한 정보를 저장합니다.
  • 사용 목적: 런타임에 객체 타입을 판별하고 동적으로 클래스를 로드하거나 참조할 때 사용됩니다.
  • 특징:
    • 객체 인스턴스가 아니라 클래스 정의 그 자체입니다.
    • StaticLoadClass 함수로 클래스를 로드하여 타입 확인 및 객체 생성을 준비할 수 있습니다.
    • 클래스의 속성, 함수, 상속 구조 등을 포함하여 객체의 정의와 관련된 모든 메타데이터를 제공합니다.

3. UBlueprintGeneratedClass

  • 설명: UBlueprintGeneratedClass는 블루프린트가 컴파일되었을 때 생성되는 클래스로, 블루프린트 기반의 클래스 정의를 포함합니다. 블루프린트에서 작성된 모든 함수와 변수를 포함하여 실행 가능한 형태로 제공됩니다.
  • 주요 역할: 블루프린트로 작성된 코드와 데이터가 결합된 형태로, C++로 작성된 기본 클래스와의 상호작용을 가능하게 합니다.
  • 사용 목적: 블루프린트 기반 객체를 동적으로 생성하거나 스폰할 때 사용됩니다.
  • 특징:
    • UClass의 하위 클래스이며, Blueprint런타임에 실행될 수 있는 형태로 컴파일된 결과물입니다.
    • Event Graph, 블루프린트 함수, 변수 등 블루프린트에서 정의된 모든 로직과 데이터를 포함하고 있어, 게임플레이 중 블루프린트 로직을 실행할 수 있습니다.
    • StaticLoadClass로 로드한 후 스폰하여 블루프린트 기반의 객체를 생성할 수 있습니다.

클래스 간의 관계 요약

클래스설명주요 역할사용 예
UObject최상위 베이스 클래스모든 객체에 대한 메모리 및 기본 관리데이터 관리, 상호작용
UClass클래스 메타데이터클래스 타입에 대한 정보 제공클래스 로드, 객체 생성 준비
UBlueprintGeneratedClass블루프린트로 생성된 클래스블루프린트 로직 및 변수 포함블루프린트 기반 객체 생성 및 상호작용

요약

  • UObject는 모든 언리얼 클래스의 기초가 되는 베이스 클래스입니다.
  • UClass는 클래스 자체에 대한 메타데이터와 타입 정보를 관리하며, StaticLoadClass로 로드됩니다.
  • UBlueprintGeneratedClass는 블루프린트가 컴파일된 결과물로, 블루프린트의 로직과 데이터를 포함합니다.
profile
게임 프로그래머

0개의 댓글