UCLASS 매크로
- BlueprintType = C++ 클래스를 블루프린트에서 변수로 선언이 가능한 타입으로 지정
- Blueprintable : 블루프린트에서 C++ 클래스를 상속가능
UPROPERTY 매크로
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Power")
float InitialPower;
UPROPERTY(VisibleAnywhere, Category = "Power")
float CharacterPower;
- 매크로는 지정자 4개까지 올 수가 있따.
첫 번째 지정자
- BlueprintReadWrite = 블루프린트에서 읽고 쓰기가 가능
- BlueprintReadOnly = 블루프린트에서 읽기만 가능(값이 항상 고정된다.)
두 번째 지정자
- Edit = 편집 가능한지
- Visible = 보여주기만 할 것인지
- DefaultsOnly = 클래스 설계도에서만
- InstanceOnly = 인스턴스 마다
- Anywhere = 둘다, 아키타입이나 인스턴스 양쪽의 프로퍼티 창에서 편집가능
- EditDefaultsOnly
- VisibleDefaultsOnly
- EditInstanceOnly
- VisibleInstanceOnly
- EditAnyWhere
- VisibleAnyWhere
세 번째 지정자
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Stat", meta = llowPrivateAccess="true"))
float BaseDamage;
네 번째 지정자
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "Stat", meta = (AllowPrivateAccess="true"))
float BaseDamage;
-
C++를 상속 받는경우 public이나 protected 변수만 사용가능하지만 AllowPrivateAccess= true로 할 경우 Accessor를 통해서 사용할 수 있다.
-
이럴경우 OOP(Object-Oriented Programming , 객체지향 프로그램) 설계를 따르면서 변수에 접근 또한 가능해 진다.
-
에디터에서 편집함과 동시에 변수 데이털르 은닉 할수 있게 돼 캡슐화가 가능해진다.
meta 관련
Transient 키워드
언리얼 오브젝트에는 직렬화 기능이 있어서 오브젝트의 UPROPERTY 속성을 저장하고 로딩할 수 있다.
컴포넌트의 스탯 중 CurrentHp 값은 게임을 시작할 때마다 변경되므로 이 값을 보관하는 것은 의미가 없고 오히려 오브젝트를 저장할 떄 필요 없는 디크슼 공간만 차지한다.
이러한 속성에는 Transient 키워드를 추가해 해당 속성을 직렬화에서 제외시키는 것이 좋다
{
UPROPERTY(Transient, VisibleInstanceOnly, Category = Stat, Meta = (AllowPrivateAccess = true))
float CurrentHP;
};
'Unreal > Concept' 카테고리의 다른 글
언리얼 게임실행 프로세스 (0) | 2019.05.12 |
---|---|
각종 포인터 얻어오기 (0) | 2019.05.12 |
UClass (0) | 2019.05.09 |
TSubclassOf (0) | 2019.05.08 |
UFUNCTION 지정 매크로 (0) | 2019.05.01 |