0. 개요
이전 포스트에서 플레이어 이름을 지정하고 슬롯을 생성했다.
생성된 슬롯에 지정한 플레이어 이름을 가져올 수 있도록 뷰에 뷰 모델의 멤버 변수를 바인딩할 것이다.
1. 필드 노티파이
(1) 필드 노티파이란?

(2) 필드 노티파이 작동 원리

필드 노티파이로 선언된 멤버 변수는 뷰 모델에 의해 변경되면 뷰(View)에서 자동으로 변경이 반영된다
(3) MVVM_LoadSlot에서 플레이어 이름을 필드 노티파이로 지정
/* 필드 노티파이*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, FieldNotify, Setter, Getter)
FString PlayerName;
void SetPlayerName(FString InPlayerName);
FString GetPlayerName() const { return PlayerName; }
};
void UMVVM_LoadSlot::SetPlayerName(FString InPlayerName)
{
// MVVM 매크로 - 값을 바꾸고 값이 바뀌었다는 델리게이트를 호출
UE_MVVM_SET_PROPERTY_VALUE(PlayerName, InPlayerName);
}
직접 이름을 Setter로 변경하지 않고 매크로를 이용하여 변경하면, 필드 노티파이를 호출하게 된다.
(4) WBP_LoadSlot_Taken에서 뷰의 멤버 변수인 Text_PlayerName을 바인딩
(4-1) 뷰 바인딩 메뉴

- 위젯 블루프린트 하단의 뷰 바인딩 클릭
- 바인딩 추가 버튼 클릭
- <없음> 콤보 박스를 클릭해 바인딩하려는 위젯 구성요소 클릭
(4-2) 필드 노티파이로 선언된 멤버 변수 선택하기

- 위젯 구성요소에서 변경하고자 하는 속성 선택 (텍스트)
- 뷰 모델(ViewModel)의 멤버 변수인 -플레이어 이름- 필드 노티파이 선택
(4-3) 변환 함수 사용
위젯의 텍스트는 FText이므로, FString 타입인 플레이어 이름을 변환하여 넣어야 한다.

- MVVM 선택 콤보 박스를 눌러 Text에서 변환 함수를 선택
- To Text (String) 함수를 사용하여 필드 노티파이 변수를 FString -> FText 변환하여 넣어줌

중앙의 화살표 버튼을 누르면 뷰와 뷰 모델 사이의 데이터 흐름을 제어할 수 있다.
(5) MVVM_LoadScreen의 NewSlotButtonPressed 함수에서 플레이어 이름 변수를 Setter로 설정
LoadSlots[Slot]->PlayerName = EnteredName;
위의 코드 조각을 아래로 대체한다.
LoadSlots[Slot]->SetPlayerName(EnteredName);
이제 플레이어 이름은 필드 노티파이이므로, 노티파이에 의해 변경된 이름이 뷰에 자동으로 적용되도록 SetPlayerName 함수를 사용한다.


'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
28-11. 로드 메뉴 UI - (7) MVVM - 슬롯 선택 버튼 (0) | 2025.04.04 |
---|---|
28-10. 저장 - (2) 저장 상태 (0) | 2025.04.02 |
28-8. 저장 - (1) 저장 게임 오브젝트(SaveGame Object) (0) | 2025.04.02 |
28-7. 로드 메뉴 UI - (5) MVVM - 위젯 상태 교체하기 (0) | 2025.04.02 |
28-6. 로드 메뉴 UI - (4) MVVM - 뷰와 뷰 모델 연결하기 (0) | 2025.04.02 |