본문 바로가기
스터디

이득우의 언리얼 프로그래밍 스터디 기록 - 4회차 : Unreal Object Reflection System

by se.jeon 2025. 2. 19.
728x90
반응형

강의 목표

  1. 언리얼 오브젝트의 특징과 리플렉션 시스템 설명
  2. 언리얼 엔진이 언리얼 오브젝트를 처리하는 방식 분석

언리얼 프로퍼티 시스템 (리플렉션, Reflection)

프로그램이 실행 시간에 자기 자신을 조사하는 기능.

반사를 의미하는 그래픽 용어와의 혼동을 피하기 위하여 프로퍼티 시스템이라고 부르기도 한다.

C++ 언어는 리플렉션을 지원하지 않기 때문에 언리얼이 자체적으로 기능을 구축했다.

리플렉션 시스템을 사용하면 런타임에서 정보를 얻을 때 안전하게 캐스팅, 형변환이 가능해진다.

 

UProperty로 선언을 해 주면 언리얼 엔진이 메모리 포인터에 대해서 자동으로 메모리를 관리 해 준다.

안 써도 되지만, 그 경우에는 직접 메모리 관리를 해 주어야 한다.

 

리플렉션 데이터를 사용하는 데에 있어서 계층 구조를 알아두면 좋다.

- UField > UStruct > UClass, UScript, UFunction

 

UStruct라고 하는 구조체에서부터 어떠한 클래스의 리플렉션 시스템이 시작된다.

언리얼 오브젝트를 정의하는 클래스의 경우 UStruct를 상속받아 함수 정보를 추가하여 전체 클래스 정보를 구축한다.

이렇게 구축된 언리얼 오브젝트 클래스는 Static 클래스 함수나 Get 클래스 함수를 사용하여 접근할 수 있다.

UProperty 라는 언리얼 오브젝트를 사용해 순회하여 오브젝트의 속성들을 조회할 수 있다.

 

GENERATED_UCLASS_BODY, GENERATED_USTRUCT_BODY는 현재 GENERATED_BODY로 통합되었다.

언리얼 오브젝트의 구성

언리얼 오브젝트는 UCLASS라는 별도의 클래스 정보를 담은 클래스를 가진다.

이를 이용해서 프로퍼티, 클래스 이름, 함수 정보와 같은 정보들을 컴파일타임과 런타임에서 조회할 수 있다.

언리얼 오브젝트는 C++의 new 키워드가 아니라 new object라는 API를 통해 생성해야 한다.

 

언리얼 오브젝트는 특별한 프로퍼티와 함수를 지정할 수 있다.

언리얼 시스템에 의해서 관리되는 클래스 멤버 변수에는 UPROPERTY라는 매크로를 지정 해 주고,

멤버 함수에는 UFUNCTION이라는 매크로를 지정 해 주면 된다.

 

UPROPERTY로 선언된 어떤 속성들은 자동으로 값이 0으로 초기화된다.

클래스 디폴트 오브젝트 (CDO)

언리얼 객체가 가진 기본값을 보관하는 템플릿 객체.

하나의 클래스로부터 다수의 물체를 생성해서 배치할 때, 설정된 기본값들을 일관성 있게 조정하는 데에 유용하게 사용되는 개념이다.

UCLASS 와 CDO는 엔진 초기화 과정에서 생성된다.

해당 포스트는 인프런의 <이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해>
강의를 수강하고 정리한 내용입니다.
 

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해 강의 | 이득우 - 인프런

이득우 | , [사진] 언리얼 C++을완벽히 이해하고 게임 개발까지 🎮 [사진] 혹시 이런 고민 있으신가요? '시중에 다양한 언리얼 튜토리얼이 있지만 이를 학습해도 프로그래머로서 성장이 정체된 느

www.inflearn.com

728x90
반응형