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 = 둘다, 아키타입이나 인스턴스 양쪽의 프로퍼티 창에서 편집가능
  1. EditDefaultsOnly
  2. VisibleDefaultsOnly
  3. EditInstanceOnly
  4. VisibleInstanceOnly
  5. EditAnyWhere
  6. 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

+ Recent posts