UPROPERTY에는 Meta 키워드를 이용하여 에디터 연동할 수 있는 기능에 대한 값을 지정이 가능하다.

그중에서 AllowPrivateAcess라는게 있는데, 이것은 블루프린트에서 C++클래스를 상속을 받으면 기본적으로 protected나 public 변수들만 적용이 가능한데, 이 키워드를 추가함으로써, private변수도 적용할 수 있게 한다.

알아본 결과 OOP 설계시 멤버 변수에 직접적으로 접근하는 자인보다 엑세서(Accessor)라는 불리는 함수 (Getter, Setter)를 통하는 디자인 방식을 선호하는 사람을 위해 제공되는 개념이라고 한다.. 일단 사용방법은 아래와 같다.

// 특정 클래스내에 필드를 정의할때
{
	public: 
		float GetHP() const {return HP;}
	private:
		UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = Stat, Meta = (AllowPrivateAcess = "true))
		float HP;
}

위 코드에서 AllowPrivateAcess를 제거한다면 컴파일중 언리얼 헤더 툴에 의해서 컴파일이 되지 않는다. 왜냐 하면 private인데 블루프린트에서 수정이 가능하도록 BlueprintReadWrite 매크로가 지정되어기 때문이다.