UPROPERTY 매크로

leejihun·2022년 5월 20일
0

언리얼

목록 보기
1/3

C++ 프로그래밍에서 포인터를 선언하면 명시적으로 객체를 소멸시켜야
차후 메모리 관리에 문제가 발생하지 않는다.
선언한 객체를 자동으로 관라히게 만들려면 코드에서 UPROPERTY 매크로를 사용해야 한다.
또한 UPROPERTY()는 C++의 변수를 블루프린트와 연동하는데 사용된다.

UPROPERTY는 멤버 변수 앞에서 기술되며,
UPROPERTY 내에 프로퍼티 지정자를 나열함으로써,
해당 프로퍼티가 엔진과 에디터와 다양한 상호작용이 가능하다.
멤버 변수가 더 이상 사용되지 않으면 할당된 메모리를 자동으로 해제 해주는 기능을 한다.

빌드시에 UHT(Unreal Header Tool)이 이 매크로를 감지하고 리플렉션 유형에 추가한다. 언리얼 리플렉션 시스템에 추가된 UPROPERTY는 Garbage Collection에 의해 생명 주기가 관리된다. 리플렉션을 통해 이 멤버 변수의 이름, 유형 등을 런타임 중에 확인 가능하다.

UPROPERTY() 매크로가 기술되지 않은 멤버 변수(프로퍼티)는 언리얼 리플렉션에 노출되지 않아, 리플렉션 시스템이 제공하는 GC, 런타임 정보 확인 등을 사용 할 수 없다.

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Wall, meta = (AllowPrivateAccess = "true")) 
class USceneComponent* RootScene;

예를 들어 이렇게 UPROPERTY를 선언했을 경우에 해석해보겠다.

VisibleAnywhere: 이 프로퍼티는 모든 프로퍼티 창에 보이지만 편집할 수 없음을 나타낸다.
BlueprintReadOnly: 이 프로퍼티는 블루프린트에서 읽을 수는 있지만 변경은 안된다.
Category = Wall : 블루프린트 편집툴에서 이 프로퍼티를 나타날때의 카테고리를 나타낸다

AllowPrivateAccess = true : C++ 코드상에서 private 접근 한정자로 수식된 변수에 대해 접근을 허용하여, 블루프린트 상에 노출시킬 수 있도록 돕는다.

class USceneComponent* RootScene 객체는 UPROPERTY와 연결되어 엔진과 에디터와 다양한 상호작용이 가능하게 됐다. 메모리의 자동 해제 기능도 얻은 셈이다.

https://darkcatgame.tistory.com/62 (자세히 정리된 곳)

레퍼런스
https://docs.unrealengine.com/5.0/ko/unreal-engine-uproperties/
https://docs.unrealengine.com/5.0/ko/unreal-engine-uproperty-specifiers/

profile
U+221E

0개의 댓글