- 개요
스킬 어빌리티 별로 타입을 부여하여 스킬 어빌리티를 장착하게 되면 동일한 타입의 스킬의 UI로 장착하도록 설정한다
또 선택된 스킬 UI를 다시 선택하면 기존의 선택 상태를 제거하는 로직을 추가한다
- C++ 사이드
1) AuraAbilityInfo 클래스

AuraAbilityInfo 구조체에 AbilityType 멤버변수를 추가하여 스킬 어빌리티의 타입을 지정한다
2) AuraAbilitySystemComponent 클래스

GetDescriptionsByAbilityTag 함수에 위와 같이 로직을 추가한다
인자로 받은 AbilityTag가 유효하지 않거나 None으로 설정되어 있는 상황을 처리한다
3) SpellMenuWidgetController 클래스

WaitForEquipSelectionSignature 델리게이트를 추가하여 Equip 버튼을 눌렀을 때의 처리를 진행한다
C++가 블루프린트 모두에서 사용할 수 있으며, 1 : 多 관계로 브로드캐스트하며 스킬의 타입(Tag)을 인자로 사용한다

WaitForEquipSelectionSignature 델리게이트와 관련된 멤버변수를 2개 추가한다
- WaitForEquipDelegate 멤버변수 : Equip 버튼 선택을 대기하는 상황에서의 델리게이트
- StopWaitingForEquipDelegate 멤버변수 : Equip 버튼 선택을 대기하지 않는 상황에서의 델리게이트

위와 같이 2개의 함수를 추가한다
- GlobeDeselect 함수 : 선택된 스킬 UI를 다시 선택하는 경우 호출
- EquipButtonPressed 함수 : Equip 버튼을 눌렀을 때 호출

불리언 변수를 새롭게 추가하여 Equip 버튼 선택을 대기하는지, 대기하지 않는지를 판단한다

SpellGlobeSelected 함수를 위와 같이 수정한다
Equip 버튼 선택을 대기하고 있는 상황이라면, 인자로 받은 Tag의 스킬 어빌리티의 스킬의 타입을 가져와
StopWaitingForEquipDelegate 델리게이트를 통해 브로드캐스트하고, 불리언 변수를 False로 설정한다

GlobeDeselect 함수의 로직은 위와 같다
Equip 버튼 선택을 대기하고 있는 상황이라면, 선택한 스킬 UI로부터 스킬의 타입을 가져와
StopWaitingForEquipDelegate 델리게이트를 통해 브로드캐스트하고, 불리언 변수를 False로 설정한다
캐싱된 선택된 스킬의 어빌리티와 상태를 초기화하고, SpellGlobeSelectedDelegate 델리게이트를 브로드캐스트한다

EquipButtonPressed 함수의 로직은 위와 같다
캐싱된 선택된 스킬의 어빌리티 타입을 가져와서 WaitForEquipDelegate 델리게이트로 브로드캐스트한다
이후 불리언 변수를 설정하여 Equip 버튼 선택을 대기하도록 설정한다
- 블루프린트 사이드
1) DA_AbilityInfo 데이터애셋

저장된 스킬 어빌리티에 대해서 Ability Type을 설정한다
2) WBP_SpellGlobe_Button 위젯 블루프린트

하위 UI에 대한 On Clicked 이벤트를 위와 같이 설정한다
스킬 창 UI가 이미 선택되었는지, 아닌지에 따라서 UI를 다르게 동작하도록 구성하였다
3) WBP_SpellMenu 위젯 블루프린트

Construct 이벤트의 2번째 시퀀스에 위와 같이 로직을 추가한다
SpellMenuWidgetController의 WaitForEquipDelegate와 StopWaitingForEquipDelegate에 함수를 바인드한다

OnWaitForEquip 함수의 로직은 위와 같다
선택한 스킬의 타입에 맞게 적합한 애니메이션을 재생한다

StopWaitingForEquip 함수의 로직은 위와 같다
선택한 스킬의 타입에 맞게 적합한 애니메이션을 중지한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 전투 시스템 - 1) 디버프 태그의 추가와 데미지 적용 방식 수정 (0) | 2025.11.13 |
|---|---|
| 스킬창 UI - 최종) 구조 변경 + 스킬 어빌리티 장착 (0) | 2025.11.08 |
| 스킬창 UI - 7) 스킬창 UI를 이용한 스킬의 정보 표현 (0) | 2025.11.07 |
| 스킬창 UI - 6) 스킬 포인트 사용 (0) | 2025.11.06 |
| 스킬창 UI - 5) 스킬 포인트와 스킬 창 UI 연결 (0) | 2025.11.02 |