UPROPERTY() 매크로 안에 작성할 수 있는 Specifier(지정자)는 아래와 같다
첫 번째 지정자
Visible / Edit + Anywhere / DefaultsOnly / InstanceOnly
- Visible / Edit :
에디터에서 수정 불가능 / 가능
- Anywhere / DefaultsOnly / InstanceOnly :
에디터에서 편집 가능한 영역. 어디서나 / CDO에서만 / 개체에서만
두 번째 지정자
BlueprintReadOnly / BlueprintReadWrite
해당 클래스를 블루프린트 클래스에서 사용하는 경우에
수정 불가능(Get 지원) / 가능(Get, Set 지원)
일반적으로 블루프린트로 작업하는 경우는 드물기에
BlueprintReadOnly로 작성하는 것이 일반적이고
블루프린트로 작업을 해야한다면, BlueprintReadWrite로 작성하면 된다
세 번째 지정자
Category = "XXX"
Details에서의 보일 카테고리 설정이다
네 번째 지정자
Meta = (AAA)
추가로 필요한 지정자들을 작성하는 용도이다
대표적으로 AllowprivateAccess, BindWidget,... 키워드 등이 있다
특히,
해당 속성이 private인데 BlueprintReadOnly로 설정을 하게 되면
private을 통해 막아놓고 BlueprintReadOnly로 읽으려고 하기에
서로 충돌이 발생한다
이를 해결하기 위해 AllowprivateAccess를 반드시 작성해야 한다
사용 예제
class STUDYPROJECT_API ASTorch : public AActor
{
...
private:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="ASTorchComponent", Meta=(AllowPrivateAccess))
const TObjectPtr<UBoxComponent> BoxComponent;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "ASTorchComponent", Meta=(AllowPrivateAccess))
const TObjectPtr<UStaticMeshComponent> BodyStaticMeshComponent;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "ASTorchComponent", Meta=(AllowPrivateAccess))
TObjectPtr<UPointLightComponent> PointLightComponent;
UPROPERTY(EditInstanceOnly, BlueprintReadOnly, Category = "ASTorchComponent", Meta=(AllowPrivateAccess))
TObjectPtr<UParticleSystemComponent> ParticleSystemComponent;
UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "ASTorchData", Meta=(AllowPrivateAccess))
int32 ID;
UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Category = "ASTorchData", Meta=(AllowPrivateAccess))
uint8 mIsDead : 1;
};
정리
첫 번째 지정자(편집 가능 여부 및 공개 여부)와 세 번째 지정자(카테고리 설정)만 바꾸고
두 번째 지정자는 블루프린트 작업을 통해 Set을 막을지에 따라 작성
네 번째 지정자는 해당 속성이 private이라면 작성하면 된다
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="XXX", Meta=(AllowPrivateAccess))
// EditAnywhere 부분과
// Category="XXX" 부분만 고려하고 작성
// BlueprintReadOnly와 Meta는
// 위의 설정으로 항상 작성하고
// 수정이 필요하면 수정
'게임 엔진 > [코드조선] 언리얼' 카테고리의 다른 글
언리얼 Actor - 주요 이벤트 함수 (0) | 2024.05.11 |
---|---|
언리얼 Actor - 언리얼 에셋 지정 (0) | 2024.05.11 |
언리얼 Actor - 언리얼 C++ 자료형 (0) | 2024.05.11 |
언리얼 Actor - Actor 클래스 생성 및 내부 구조 (0) | 2024.05.11 |
언리얼 기본 요소 - World (0) | 2024.05.11 |