안선생의 개발 블로그

[UE5] UPROPERTY() 매크로 본문

언리얼/언리얼 C++

[UE5] UPROPERTY() 매크로

안선생 2023. 10. 24. 22:27

UPROPERTY() 매크로는 UE가 새 클래스, 함수, 변수를 인식하게 합니다. 이러한 매크로는 엔진이 수집하는 가비지입니다. 매크로를 지정할 때 언리얼 에디터 내에서 편집하고 표시할 수 있습니다.


여기서 가비지란?

가비지컬렉션 : 가비지 컬렉션이 발생하면, 엔진은 루트 세트부터 시작해서 알려진 UObject 레퍼런스 트리를 검색하여 참조된 오브젝트를 전부 추적할 수 있습니다. 참조되지 않은 오브젝트, 즉 트리 검색에서 찾지 못한 것들은 더이상 필요치 않은 오브젝트라 가정하고 제거합니다. 멤버 변수가 더 이상 사용되지 않으면 할당된 메모리를 자동으로 해제 해주는 기능을 한다.

 

UPROPERTY() 사용법은 공식문서에 따르면 아래와 같이 사용한다고 나온다.

프로퍼티 지정자

엔진 및 에디터의 다양한 면에 대한 프로퍼티 작동방식을 지정하기 위해 UProperty 를 선언할 때 사용되는 키워드

 

자주 사용되는 몇가지만 써보겠습니다.

EditAnywhere :  블루프린트와 인스턴스 양쪽의 프로퍼티 창에서 편집할 수 있습니다.

VisibleAnywhere : 블루프린트와 인스턴스 양쪽의 프로퍼티 창에서 편집할 수 없고 보기만 가능

EditDefaultsOnly블루프린트 프로퍼티 창에서만 보이며 편집 가능

VisbileInstanceOnly :  인스터스 프로퍼티 창에서 보이며 편집은 불가능

Category : 블루프린트 편집 툴에 이 프로퍼티를 표시할 때의 카테고리를 지정합니다. 

 

실행결과

블루프린트창

 

인스턴스창

 

두 실행결과를 보면 알 수 있듯이 Edit는 수정 가능하고 Visible은 수정이 불가능한것을 알 수 있다. 또 defaults는 블루프트에서만 보이고 Instance는 인스턴스에서만 보인다. 이렇게 UPROPERTY매크로는 멤버변수를 에디터네에서 수정하거나 볼 수 있으며 유용하게 사용할 수 있다. 

 

더많은 프로퍼티 지정자는 아래 공식문서 링크에서 확인 가능하다.

 

https://docs.unrealengine.com/5.3/ko/unreal-engine-uproperties/

 

프로퍼티

게임플레이 클래스에 대한 프로퍼티 생성 및 구현 관련 레퍼런스입니다.

docs.unrealengine.com