0. 개요

이전 포스트에서 위젯에 위젯 컨트롤러를 연결했다.

위젯 컨트롤러에게서 어빌리티 정보를 받아 스펠 장착 행에 표시할 수 있도록 하는 버튼을 생성한다.

 

 

1. 스펠 장착 버튼

스펠 장착 행에 위치한 글로브는 장착된 스킬을 나타낸다.

기존에 스펠 트리의 글로브는 선택하여 해당 어빌리티의 레벨을 상승시키도록 구현이 되어있다.

따라서, 기존에 사용되던 글로브를 복제하여 새로운 기능을 가지는 글로브를 만들 것이다.

 

 

(1) 스펠 장착 글로브 버튼 생성

WBP_SpellGlobe_Button을 복제하여 새로운 글로브 버튼을 생성한다.

 

 

(2) 스펠 장착 행에 배치한 글로브 수정

기존에 배치된 SpellGlobe_Button을 모두 EquippedRow_Button으로 교체한다.

교체한 버튼의 이름을 변경하고 변수로 지정한다.

 

 

(3) 스펠 메뉴에 초기값 전달하기

void USpellMenuWidgetController::BroadcastInitialValues()
{
	// 장착된 어빌리티
	BroadcastAbilityInfo();
}

위젯 컨트롤러를 이용하여 초기의 어빌리티 정보를 위젯으로 전송한다.

 

 

(4) WBP_SpellMenu에서 스킬 장착 행에 위젯 컨트롤러 연결하기


- 위젯 컨트롤러 연결 시 주의사항

일반적으로 위젯에 위젯 컨트롤러를 연결할 때 해당 위젯의 부모에서 연결을 수행한다.


스펠 장착 행을 변수로 지정하고 위젯 컨트롤러를 연결할 것이다.

 

 

(4-1) WBP_EquippedSpellRow에서 스펠 글로브에 위젯 컨트롤러 연결하기

 

 

(5) 델리게이트로 전달받은 Ability Info 사용

각 글로브에 대해 가져온 어빌리티 정보를 표현할 것이다.

 

 

(5-1) InputTag 설정

글로브에 할당된 입력을 매칭하기 위해 InputTag를 멤버 변수로 생성한다.

 

 

(5-2) WBP_EquippedSpellRow 에서 각 글로브에 InputTag 지정

각 글로브에 입력에 해당하는 태그를 지정한다.

 


- 패시브 버튼들에 할당할 InputTag가 없으므로 태그를 생성한다.

AuraGameplayTags 클래스를 수정한다.

	// 패시브
	FGameplayTag InputTag_Passive_1;
	FGameplayTag InputTag_Passive_2;
	GameplayTags.InputTag_4 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.4"),
		FString("Number 4 Button")
	);

	GameplayTags.InputTag_Passive_1 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.Passive.1"),
		FString("Passive 1")
	);

	GameplayTags.InputTag_Passive_2 = UGameplayTagsManager::Get().AddNativeGameplayTag(
		FName("InputTag.Passive.2"),
		FString("Passive 2")
	);

WBP_EquippedSpellRow에서 패시브 글로브에 입력 태그를 지정한다.


(6) WBP_EquippedSpellGlobe_Button에서 어빌리티 정보 할당

델리게이트를 통해 넘겨받은 Ability Info를 분해하여 해당 버튼과 어빌리티 정보의 입력 태그가 일치하면

어빌리티의 그림과 배경을 가져와 지정하도록 한다.

 

 

(7) WBP_SpellMenu의 블루프린트 이벤트 그래프 수정

이제 위젯 컨트롤러의 Broadcast Initial Values 함수를 호출해야 한다.

해당 함수를 블루프린트에서 호출하기 위해 위젯 컨트롤러를 블루프린트 버전으로 들고있게 한다.

캐스팅한 블루프린트 버전의 위젯 컨트롤러를 사용하여 해당 함수를 호출한다.

 

이제 정상적으로 스펠 메뉴에서 장착된 어빌리티의 정보가 나타나는 것을 볼 수 있다.

 

기본적으로 장착된 파이어볼트의 기본 할당 입력 태그를 다른 버튼으로 수정하여 테스트한다.

입력 태그를 1로 지정

스펠 메뉴 UI에서도 변경된 버튼 위치에 어빌리티가 표시된다.