0. 개요

불러올 슬롯을 선택하는 버튼을 설계한다.

(1) 어떤 슬롯이 선택되었는지 표시하기

- 선택한 슬롯의 선택 버튼 비활성화

- 나머지 슬롯의 선택 버튼 활성화

 

(2) 게임 시작, 슬롯 삭제 버튼 활성화

 

 

1. 슬롯 선택 버튼

(1) MVVM_LoadSlot에서 델리게이트 선언

불리언을 받는 다이내믹 델리게이트를 선언한다.

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FEnableSelectSlotButton, bool, bEnable);

불리언에 따라 버튼을 활성화 / 비활성화 하게 될 것이다.

 

 

(2) MVVM_LoadScreen에서 선택 버튼 콜백 함수에서 델리게이트 호출

void UMVVM_LoadScreen::SelectSlotButtonPressed(int32 Slot)
{
	// 슬롯에 접근해서 루프
	for (const TPair<int32, UMVVM_LoadSlot*> LoadSlot : LoadSlots)
	{
		// 버튼 활성화 델리게이트 호출, 선택한 슬롯은 제외
		if (LoadSlot.Key == Slot)
			LoadSlot.Value->EnableSelectSlotButton.Broadcast(false);
		else
			LoadSlot.Value->EnableSelectSlotButton.Broadcast(true);
	}
}

슬롯 선택을 누른 슬롯의 버튼은 비활성화하고 나머지 슬롯은 활성화하는 로직이다.

 

 

(3) WBP_LoadSlot_Taken 이벤트 그래프에서 델리게이트 이벤트 바인딩 

해당 델리게이트로 전달받은 불리언을 이용해 버튼을 활성화 / 비활성화 한다.

 

 

2. 게임 시작, 슬롯 삭제 버튼 활성화

(1) WBP_LoadScreen의 Event PreConstruct에서 두 버튼 비활성화

위의 로직을 함수로 접어 불리언을 받게 할 수 있다.

 

 

(2) Blueprint Initialize Widget 이벤트에 델리게이트 바인딩

이 함수는 MVVM이 생성되고, 이어서 뷰가 생성된 이후에 호출되기 때문에 뷰와 뷰 모델이 모두 유효하다.

따라서 뷰 모델을 가져와 이벤트에 바인딩 한다.

 

 

3. 디버그

(1) 로드 메뉴에서 UI 외부를 클릭하면 카메라 시점을 조작하게 되는 버그

입력 모드를 UI Only로 고정한다.