[UE5] UPROPERTY 인자를 통한 변수 노출

kkado·2024년 4월 1일
0

UE5

목록 보기
27/63
post-thumbnail

C++ 클래스를 생성한 후, 이 클래스로 블루프린트를 만들었을 때 내부 변수들을 블루프린트나 뷰포트 에디터, 혹은 이벤트 그래프에서 조회 및 수정할 수 있도록 하는 UPROPERTY 내부 지정자 몇 가지를 알아보고자 한다.

Defaults, Instance

Visible

'Visible' 을 지정하면 변수를 확인할 수는 있지만 수정할 수는 없다.

VisibleAnywhere

블루프린트와, 그로 만들어진 인스턴스 모두에서 볼 수 있도록 한다.

VisibleDefaultsOnly

블루프린트 클래스에서만 확인할 수 있도록 하고, 이로 만들어진 인스턴스에서는 확인할 수 없다.

VisibleInstanceOnly

VisibleDefaultsOnly와 반대로 블루프린트 클래스에서는 확인할 수 없고 인스턴스에서만 확인할 수 있다.

위 코드와 같이 세 개의 변수를 만들었다.

블루프린트 클래스에서는 Anywhere와 DefaultsOnly만 확인할 수 있다.

뷰포트에 추가된 인스턴스에서는 Anywhere와 InstanceOnly만 확인할 수 있다.

모든 변수들은 회색으로 처리되어 수정할 수는 없음을 확인할 수 있다.

Edit

Edit은 조회뿐만 아니라 수정까지 가능하도록 해 준다.
Visible과 동일하게 Anywhere, InstanceOnly, DefaultsOnly 옵션을 설정할 수 있다.

세 개의 변수를 더 추가해 보았다.

이번에는 변수를 확인 및 수정까지 할 수 있도록 음영처리되지 않은 모습을 볼 수 있다.


Event Graph Read/Write

위에서 본 Visible, Edit 지정자만으로는 블루프린트 이벤트 그래프 상에서 Get, Set 할 수 없다.

이제 이벤트 그래프에서 접근 가능하도록 하는 지정자를 알아본다.

BlueprintReadWrite

이름에서도 알 수 있듯이 읽기(read) 즉 Get, 그리고 쓰기(write) 즉 Set을 모두 사용할 수 있도록 한다.

BlueprintReadOnly

읽기, 즉 Get만 가능하도록 한다.

이제 이벤트 그래프에서 우클릭 후 변수명을 검색해 보면,

'BlueprintReadWrite' 로 설정한 변수는 Get, Set 기능이 모두 가능한 반면, 'BlueprintReadOnly'로 설정한 변수는 Get 기능만 사용 가능한 것을 확인할 수 있다.

public

그리고 이벤트 그래프에서 사용하기 위해서는 클래스 내에 public 으로 선언되어 있어야 한다는 점에 유의한다. 만약 private으로 선언되어 있다면 컴파일 에러가 발생할 것이다.

또는 UPROPERTY(BlueprintReadWrite, meta=(AllowPrivateAccess = "true")) meta 지정자를 추가로 넣어주면 private 변수에도 접근할 수 있다.


정리

C++ 클래스에서 UPROPERTY 인자에 다양한 지정자를 지정함으로써 블루프린트 클래스 및 뷰포트 에디터 상에 노출시킬 수 있고 값을 수정하게 할 수 있다.

profile
베이비 게임 개발자

0개의 댓글