Unreal Engine - UObject

2025. 3. 24. 17:12·Unreal Engine

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/objects-in-unreal-engine

 

1. UCLASS 매크로


언리얼에는 게임 오브젝트를 처리하기 위한 시스템이 존재한다.

언리얼엔진은 UObject에서 파생된 클래스에 UCLASS 매크로를 붙여 통해 게임 오브젝트 처리 시스템이 인식할 수 있도록 한다. 

그 결과 언리얼 엔진의 GC, Reflection 등의 시스템을 사용할 수 있게 된다.

 

추가적으로 UObject의 함수나 변수 또한 매크로를 통해 언리얼 엔진이 인식할 수 있게 해줄 수 있다.

  • UPROPERTY()
  • UFUNCTION() 

참고 글)

https://gbleem.tistory.com/35

 

Unreal Property System (Reflection)

참고자료https://unrealcommunity.wiki/unreal-property-system-(reflection)-36d1e6 Unreal Property System (Reflection) | Unreal Engine Community WikiBrief description of the Unreal Property System.unrealcommunity.wikihttps://dev.epicgames.com/documentati

gbleem.tistory.com

 

 

2. UObject 생성


new를 통해서 생성할 수 없다.

  • 런타임에 생성하기 위해서는 NewObject<class> 를 사용하거나
  • 생성자의 경우 CreateDefaultSubobject<class> 를 사용해서 생성해야 한다.
  • 그 결과 GC가 알아서 자동으로 해제해준다.

주의점) 

  • UObject의 생성자는 가벼워야 하고 default 값 설정 및 subobject를 구성하는 데에만 사용해야 한다.
  • 생성 시 다른 함수 기능을 호출하지 말고, 액터나 액터 컴포넌트인 경우 초기화는 BeginPlay에서 한다.

 

 

3. UObject를 통해 제공되는 함수 기능


  • GC
  • 레퍼런스 업데이트
  • reflection
  • 직렬화
  • 자동 프로퍼티 초기화
  • 디폴트 프로퍼티 변경사항 업데이트
  • 자동 에디터 통합
  • 런타임에 사용 가능한 타입 정보
  • 네트워크 리플리케이션

 

 

4. 헤더의 모습


#pragma once 	

#include 'Object.h'	
#include 'MyObject.generated.h'		

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

 

 

5. UObject 업데이트 및 파괴


업데이트

  • 액터나 액터 컴포넌트의 경우 자동으로 호출되는 Tick 함수가 있지만, UObject에는 없다.
    • 그 이유는 UObject는 실제로 존재하는 객체가 아니라 데이터를 관리하는 용도로 쓰기 때문이다.
  • FTickableGameObject 클래스를 추가 상속하여 Tick을 구현하거나
  • Tick이 존재하는 AActor 클래스를 통해 Instance 생성하여 UObject 업데이트 해주는 방법이 있다.

파괴

  • 오브젝트가 더 이상 사용되지 않으면 GC 시스템이 자동으로 오브젝트를 파괴한다

 

 

6. AActor vs. UObject


결론적은 씬에 직접 배치할 필요가 없고, 위치나 Tick 등을 사용하지 않아도 괜찮을 때 오버헤드를 줄이기 위해서 UObject를 사용할 수 있다.

예를 들어, 아이템 데이터, 설정 정보, 퀘스트 정보 등이 UObject에 적합하다고 한다.

'Unreal Engine' 카테고리의 다른 글

Unreal Engine - Standalone을 리슨 서버로 확장하기  (0) 2025.03.24
Unreal Engine - Gameplay Framework  (0) 2025.03.24
Unreal Engine - 채팅 (리슨 서버)  (0) 2025.03.14
Unreal Engine - Main Menu (흐름 위주의 정리)  (0) 2025.03.07
UE5 Issues : ADS (Aim Offset 1D)  (0) 2025.03.05
'Unreal Engine' 카테고리의 다른 글
  • Unreal Engine - Standalone을 리슨 서버로 확장하기
  • Unreal Engine - Gameplay Framework
  • Unreal Engine - 채팅 (리슨 서버)
  • Unreal Engine - Main Menu (흐름 위주의 정리)
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Unreal Engine (73)
      • C++ (19)
      • 알고리즘(코딩테스트) (27)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

    • 과제용 깃허브
    • 깃허브
    • velog
  • 공지사항

  • 인기 글

  • 태그

    싱글턴
    const
    character animation
    applydamage
    actor 클래스
    cin함수
    매크로 지정자
    addonscreendebugmessage
    DP
    상속
    enhanced input system
    Vector
    gamestate
    map을 vector로 복사
    C++
    blend pose
    additive animation
    템플릿
    BFS
    motion matching
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gbleem
Unreal Engine - UObject
상단으로

티스토리툴바