개요
언리얼의 자체 리플렉션 기능인 '언리얼 프로퍼티 시스템'의 매크로 함수 중 UPROPERTY() 에 대해서 정리해봤다.
UPROPERTY
변수에 붙는 리플렉션 매크로입니다.
인자값을 통해 용도에 맞게 활용할 수 있습니다.
보통 인자값은 UPROPERTY(편집(보기) 권한, 블루프린트 공개&수정권한, Category, meta) 순으로 작성합니다.
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats", meta = (AllowPrivateAccess = "true"))
편집(보기)권한
- Edit(Visible)DefaultsOnly : 블루프린트에디터의 디테일 패널에서 수정(보기) 가능
- Edit(Visible)InstanceOnly : 월드 상 오브젝트의 디테일 패녈에서 수정(보기) 가능
- Edit(Visible)Anywhere : 둘 다 수정(보기) 가능
EditDefaultsOnly 확인

블루프린트 에디터 디테일 패널에서 확인 가능

EditInstanceOnly 확인

actor 월드 배치 후 디테일 패널에서 확인가능

블루프린트 공개& 수정 권한
- BlueprintReadOnly : 블루프린트에서 해당 변수를 읽기가 가능합니다. (블루프린트 변수 패널에서 확인 가능)
- BlueprintReadWrite : 블루프린트에서 해당 변수를 읽기 & 쓰기가 가능합니다. (블루프린트 변수 패널에서 확인 가능)
- BlueprintGetter : 해당 변수에 접근 할 수 있는 함수를 지정하고 블루프린트는 해당 함수를 통해 변수에 접근합니다.
- get할 때 사용하는 함수를 커스텀 할 수 있습니다.
- BlueprintSetter: 해당 변수에 수정할 수 있는 함수를 지정하고 블루프린트는 해당 함수를 통해 변수에 수정합니다.
- set할 때 사용하는 함수를 커스텀 할 수 있습니다. ( get도 호출된다고 함)
BlueprintReadWrite 확인
VisibleAnywhere와 같이 있을 때를 확인해봤습니다.

블루프린트에서 사용가능

디테일 패널에서는 Visible이라 바꾸지 못함(기본값 변경 불가)

Category
- 에디터 상의 카테고리를 지정가능합니다.
다음과 같이 카테고리를 지정했을 때
test_int만 Catergory1/Category2 산하로 들어가있습니다.
Meta
- Metadata 지정자로 에디터 관련 다양한 기능을 구현할 수 있습니다.
- e.g. AllowPrivateAccess: private 변수를 에디터 상 노출, UIMin=0 UIMax=10: 에디터 상 조정할 수 있는 숫자범위 지정
- https://dev.epicgames.com/documentation/ko-kr/unreal-engine/metadata-specifiers-in-unreal-engine?application_version=5.4
private에 EditDefaultsOnly를 선언하고 변수를 생성해도
****EditDefaultsOnly 해도 보인다....Visible로 해도 보인다..****
private 영역에 meta=(AllowPrivateAccess = "true")를 선언한 변수를 생성하면
에디터 상에도 보이게 됩니다.
그 외
SimpleDisplay & AdvanceDisplay
Simple은 이전과 똑같이 표기되고 AdvancedDisplay는 고급탭 안에 표기되는 것을 볼 수 있습니다.
주석
UPROPERTY 위에 주석을 달면
변수 표기 위에 마우스 호버 시 주석이 나타나게 됩니다.
Reference
UPROPERTY 공식 문서:
참고 블로그:
https://darkcatgame.tistory.com/62?category=795582
'Unreal' 카테고리의 다른 글
[Unreal] Behavior Tree (0) | 2024.12.27 |
---|---|
[Unreal] Reflection (2) | 2024.12.24 |
[Unreal] Simple & Complex Collision (0) | 2024.12.21 |
[TIL] 움직이는 캐릭터 만들기 (0) | 2024.12.19 |
[TIL] 가위바위보 슈팅 게임(?) 개발 (2) | 2024.12.18 |