언리얼엔진5 공부

UObject

Client Side 2025. 11. 14. 22:37

Unreal Object Class

  • UObject는 언리얼 엔진에서 게임 개발에 필요한 모든 핵심적인 기능을 제공하는 베이스 클래스.
  • Native C++의 문제점과 Unreal C++의 필요성
    • C++의 한계점
      • Native C++에는 리플렉션 기능이 없다
      • 디자이너, 아티스트와 협업이 어렵다
      • 메모리 할당 등 실수가 나오기 쉽다
  • 언리얼 c++의 장점
    • 블루프린트와의 연동
    • 안정적인 메모리 관리 (가비지 컬렉션)
      • UObject를 상속받은 객체들은 언리얼 엔진의 가비지 컬렉터의 관리 대상이 되어, 참조가 없는 객체들을 자동으로 정리해준다. UPROPERTY 매크로로 선언된 포인터들은 가비지 컬렉터가 추적해서 댕글링 포인터 문제 발생 위험을 줄여준다.
    • 표준화된 개발 방식과 높은 생산성
      • UObject 계층 구조, 액터 컴포넌트 시스템, 입력 시스템 등 언리얼 엔진이 제공하는 표준화된 구조와 API를 활용해서 일관성 있고 재사용 가능한 코드를 작성하기 용이하다. Hot Reload 기능으로 코드 변경 후에도 에디터를 재시작할 필요 없이 빠르게 테스트할 수 있어서 생산성이 뛰어나다.
    • 한 줄 정리
      • 언리얼 엔진은 C++의 성능은 가져오면서도 게임 개발에 필수적인 리플렉션, 블루프린트 연동, 에디터 통합, 가비지 컬렉션 등의 기능을 위해 UHT와 같은 도구를 활용하여 C++에 특별한 규칙(매크로)을 도입했다. 이는 Native C++에서는 직접 구현해야 하거나 제공되지 않는 기능들을 효율적으로 사용할 수 있게 하여 개발 생산성과 팀 협업 능력을 비약적으로 높여준다.
  • UObject를 상속 받으면
    • 리플렉션 시스템 지원
    • 가비지 컬렉션(Garbage Collection) 관리
      • UObject를 상속받는 객체는 참조가 없어지면 언젠가 가비지 컬렉터가 알아서 메모리에서 정리해 준다. 단, UObject 포인터는 TWeakObjectPtr나 TSoftObjectPtr 같은 특별한 스마트 포인터나, UPROPERTY 매크로와 함께 사용해야 가비지 컬렉터가 제대로 추적할 수 있다.
    • 직렬화 지원
      • UObject를 상속받은 객체들은 자동으로 데이터를 저장하고 불러올 수 있는 직렬화 기능이 내장되어 있다.
    • 이름 관리 (Name Management) & 고유 ID 부여
      • 모든 UObject는 언리얼 엔진 내부에서 고유한 이름을 가지고 관리된다. 이를 통해 엔진 전체에서 객체를 식별하고 참조하는 데 사용된다.
    • 객체 계층 구조
      • UObeject는 언리얼 엔진의 모든 객체들이 상호작용하고 연결되는 기본적인 프레임워크를 제공한다. 모든 UObject 는 엔진 내부에서 어떤 Outer를 가지고 있는지 등의 정보를 통해 계층적인 관계를 형성할 수 있다.

'언리얼엔진5 공부' 카테고리의 다른 글

디버깅  (0) 2025.11.17
CDO (Class Default Object)  (0) 2025.11.16
UHT, UBT, UAT, UBS, UMS  (1) 2025.11.13
랜덤함수  (0) 2025.11.11
총에 왼손 붙이기  (0) 2025.11.10