C++ 클래스를 생성한 후, 이 클래스로 블루프린트를 만들었을 때 내부 변수들을 블루프린트나 뷰포트 에디터, 혹은 이벤트 그래프에서 조회 및 수정할 수 있도록 하는 UPROPERTY
내부 지정자 몇 가지를 알아보고자 한다.
'Visible' 을 지정하면 변수를 확인할 수는 있지만 수정할 수는 없다.
블루프린트와, 그로 만들어진 인스턴스 모두에서 볼 수 있도록 한다.
블루프린트 클래스에서만 확인할 수 있도록 하고, 이로 만들어진 인스턴스에서는 확인할 수 없다.
VisibleDefaultsOnly
와 반대로 블루프린트 클래스에서는 확인할 수 없고 인스턴스에서만 확인할 수 있다.
위 코드와 같이 세 개의 변수를 만들었다.
블루프린트 클래스에서는 Anywhere와 DefaultsOnly만 확인할 수 있다.
뷰포트에 추가된 인스턴스에서는 Anywhere와 InstanceOnly만 확인할 수 있다.
모든 변수들은 회색으로 처리되어 수정할 수는 없음을 확인할 수 있다.
Edit은 조회뿐만 아니라 수정까지 가능하도록 해 준다.
Visible과 동일하게 Anywhere, InstanceOnly, DefaultsOnly 옵션을 설정할 수 있다.
세 개의 변수를 더 추가해 보았다.
이번에는 변수를 확인 및 수정까지 할 수 있도록 음영처리되지 않은 모습을 볼 수 있다.
위에서 본 Visible, Edit 지정자만으로는 블루프린트 이벤트 그래프 상에서 Get, Set 할 수 없다.
이제 이벤트 그래프에서 접근 가능하도록 하는 지정자를 알아본다.
이름에서도 알 수 있듯이 읽기(read) 즉 Get, 그리고 쓰기(write) 즉 Set을 모두 사용할 수 있도록 한다.
읽기, 즉 Get만 가능하도록 한다.
이제 이벤트 그래프에서 우클릭 후 변수명을 검색해 보면,
'BlueprintReadWrite' 로 설정한 변수는 Get, Set 기능이 모두 가능한 반면, 'BlueprintReadOnly'로 설정한 변수는 Get 기능만 사용 가능한 것을 확인할 수 있다.
그리고 이벤트 그래프에서 사용하기 위해서는 클래스 내에 public
으로 선언되어 있어야 한다는 점에 유의한다. 만약 private으로 선언되어 있다면 컴파일 에러가 발생할 것이다.
또는 UPROPERTY(BlueprintReadWrite, meta=(AllowPrivateAccess = "true"))
meta 지정자를 추가로 넣어주면 private 변수에도 접근할 수 있다.
C++ 클래스에서 UPROPERTY 인자에 다양한 지정자를 지정함으로써 블루프린트 클래스 및 뷰포트 에디터 상에 노출시킬 수 있고 값을 수정하게 할 수 있다.