0. 개요

언리얼 엔진의 버전이 올라가면서 베타 스테이지에 있던 MVVM 플러그인에 약간 변화가 생기면서 기존의 MVVM 위젯이 작동하지 않은 버그가 발생했다.

 

 

1. 버그가 발생한 이유

UE 5.3 부터 MVVM 플러그인이 변화했는데, 뷰 모델의 생성 타입(Creation Type)이 수동(Manual)일 때, 뷰 모델의 필드 노티파이가 위젯의 어떤 요소에도 바인드 되지 않았다면, 위젯에서 뷰 모델을 할당하는 데에 실패하게 된다.

따라서, 버그를 해결하기 위해서는 '필드 노티파이를 위젯의 어떤 한 요소에라도 바인딩'해야 한다.

 

 

2. 버그 수정

(1) 로드 슬롯 타입 별 필드 노티파이 바인드

 

(1-1) MVVM_LoadSlot 뷰 모델

MVVM_LoadSlot 내의 멤버 변수 중 하나였던 로드 슬롯 이름을 필드 노티파이로 설정한다.

이 이름은 플레이할 때 실제로 노출되지 않는다.

	UPROPERTY(EditAnywhere, BlueprintReadWrite, FieldNotify, Setter, Getter, meta = (AllowPrivateAccess = "true"))
	FString LoadSlotName;
public:
	/* Getter, Setter */
	void SetPlayerName(FString InPlayerName);
	void SetLevel(int32 InLevel);
	void SetMapName(FString InMapName);
	void SetLoadSlotName(FString InSlotName);

	FString GetPlayerName() const { return PlayerName; }
	int32 GetLevel() const { return Level;}
	FString GetMapName() const { return MapName; }
	FString GetLoadSlotName() const {return LoadSlotName;}
void UMVVM_LoadSlot::SetLoadSlotName(FString InSlotName)
{
    UE_MVVM_SET_PROPERTY_VALUE(LoadSlotName, InSlotName);
}

 

 

(1-2) 뷰 모델 내의 필드 노티파이 변수 바인드

WBP_LoadSlot 의 여러 종류 위젯 내에 텍스트 박스를 만들고 위의 슬롯 이름을 바인드한다.

 

 

(2) WBP_LoadScreen

위의 할당 된 BP Load Screen View Model이 null로 나타난다.

이 위젯의 뷰 모델은 Property Path로 설정되어 있어 특정 함수로 뷰 모델을 감지하는데, 뷰 모델의 필드 노티파이가 바인드 되지 않았기 때문에 뷰 모델이 null로 나타나고 있다.

따라서 뷰 모델 바인드를 진행한다.