관리 메뉴

기억을 위한 기록들

[UE4-CPP] UPROPERY()에 관하여 본문

UnrealEngine/UE4 - CPP

[UE4-CPP] UPROPERY()에 관하여

에드윈H 2021. 1. 21. 18:14

 

UPROPERTY는 멤버 변수 앞에 기술 되며, UPROPERTY내에 프로퍼티 지정자를 나열함으로, 해당 프로퍼티가 엔진과 에디터의 다양한 부분과 상호작용 할 수 있습니다.

 

클래스내의 변순 선언시

 

 

빌드 시 UHD(Unreal Header Tool)이 해당 매크로를 감지하고 리플렉션 유형에 추가함.

 

이렇게 언리얼 리플렉션 시슽메에 추가된 UPROPERTY는 가비지 콜렉션(GC)에 의해 생명주기가 관리되며, 리플렉션을 통해 이 멤버 변수의 이름, 유형 등을 런타임 중에 확인할 수 있게 됩니다.

 

 

반대로, UPROPERTY()매크로가 있지 않는 멤버 변수는 언리얼 리플렉션에 노출되지 않으며, 리플렉션 시스템이 제공하는 GC, 런타임 정보 확인등을 사용할수 없게 된다.

 

언리얼 리플렉션에 관하여

www.unrealengine.com/ko/blog/unreal-property-system-reflection?sessionInvalidated=truehyo-ue4study.tistory.com/182hyo-ue4study.tistory.com/182

 

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

www.unrealengine.com/ko/blog/unreal-property-system-reflection?sessionInvalidated=true 언리얼 프로퍼티 시스템 (리플렉션) 리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다...

hyo-ue4study.tistory.com

 

 

UPROPERTY 지정자

이렇게 붙은 UPROPERTY를 붙이게 되면 리플렉션 시슽메에 등록되는데, 프로퍼티 지정자를 추가 해주면, 리플렉션 시스템을 바탕으로 엔진과 에디터의 상호작용 할 수 있는 기능을 추가로 제공합니다.

 

 

프로퍼티 지정자 기능
BlueprintReadOnly 이 프로퍼티는 블루프린트에서 읽을 수는 있지만 변경은 안됩니다. BlueprintReadWrite 지정자와 호환되지 않습니다.
BlueprintReadWrite 이 프로퍼티는 블루프린트에서 읽거나 쓸 수 있습니다. BlueprintReadOnly 지정자와 호환되지 않습니다.
EditAnywhere 이 프로퍼티는 아키타입이나 인스턴스 양쪽의 프로퍼티 창에서 편집할 수 있습니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다.
VisibleAnywhere 이 프로퍼티는 모든 프로퍼티 창에 보이지만 편집할 수 없음을 나타냅니다. 이 지정자는 "Edit" 지정자와 호환되지 않습니다.
EditDefaultsOnly 이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, 아키타입 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다.
VisibleDefaultsOnly 이 프로퍼티는 아키타입에 대한 프로퍼티 창에서 보이기만 할 뿐, 편집할 수는 없음을 나타냅니다. 이 지정자는 어떤 "Edit" 지정자와도 호환되지 않습니다.
EditInstanceOnly 이 프로퍼티는 프로퍼티 창에서 편집할 수 있지만, 아키타입이 아닌 인스턴스 상에서만 가능합니다. 이 지정자는 어떤 "Visible" 지정자와도 호환되지 않습니다.
VisibleInstanceOnly 이 프로퍼티는 아키타입이 아닌 인스턴스에 대한 프로퍼티 창에서 보이기만 할 뿐, 편집할 수는 없음을 나타냅니다. 이 지정자는 어떤 "Edit" 지정자와도 호환되지 않습니다.
Category=" TopCategory| SubCategory|..." 블루프린트 편집 툴에 이 프로퍼티를 표시할 때의 카테고리르 지정합니다. 중첩 카테고리는 | 연산자로 정의합니다.
...  etc....

 

이외에도 엄청 많은 지정자들이 있지만, 다 사용해본적 아직까진 없으며 많이 사용한것들만 적어 보았다.

 

 

그외에 많은 프로퍼티 참고는 공식 홈페이지에서

docs.unrealengine.com/ko/ProgrammingAndScripting/GameplayArchitecture/Properties/Specifiers/index.html

 

프로퍼티 지정자

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

docs.unrealengine.com

 

 

 

 

 

 

 

docs.unrealengine.com/ko/ProgrammingAndScripting/GameplayArchitecture/Properties/index.html

 

프로퍼티

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

docs.unrealengine.com