- 개요
프로젝트에서 사용하는 스킬들에 다음과 같이 상태를 추가한다
- 1) 스킬이 현재 잠겨있는 상태
- 2) 잠겨있지만 스킬을 부여할 수 있는 상태
- 3) 스킬이 잠금해제된 상태
- 4) 스킬이 부여된 상태
위와 같이 추가한 4개의 상태에 대응하는 Tag들은 다음과 같다
- 1) Abilities.Status.Locked
- 2) Abilities.Status.Eligible
- 3) Abilities.Status.Unlocked
- 4) Abilities.Status.Equipped
스킬의 상태의 Tag들을 스킬창 UI와 연동하고 또, 스킬창 UI의 Manager 클래스를 설정하는 로직을 추가한다
- C++ 사이드
1) AuraGameplayTags 클래스




위와 같이 어빌리티와 관련된 Tag들을 추가하고, 추가한 Tag들을 실제로 생성하는 로직을 추가한다
추가한 Tag들을 정리하면 다음과 같다
- InputTag.Passive : 패시브형 어빌리티
- Abilities.HitReact : 피격과 관련된 어빌리티
- Abilities.Status : 스킬 어빌리티의 상태
- Abilities.Type : 어빌리티의 타입
2) AuraAbilitySystemLibrary 클래스


스킬창 UI의 매니저를 반환하는 GetSpellMenuWidgetController 함수를 추가한다
3) AbilityInfo 클래스 - AuraAbilityInfo 구조체

AuraAbilityInfo 구조체에 어빌리티의 상태를 의미하는 StatusTag 멤버변수를 추가한다
4) AuraAbilitySystemComponent 클래스


GetStatusFromSpec 함수를 새롭게 추가한다
해당 함수를 호출하여 인자로 넘겨준 GESpec으로부터 "Abilities.Status"의 태그를 가져와 어빌리티의 상태를 판단한다

AddCharacterAbilities 함수에 위의 로직을 추가한다
GA를 부여하기 이전에 해당 GA의 GASpec에 "Abilities.Status.Equipped" 태그를 부여한다
5) AuraWidgetController 클래스

BroadcastAbilityInfo 함수에 위의 로직을 추가하여 GameplayAbility에 부여된 StatusTag를 브로드캐스트한다
6) SpellMenuWidgetController 클래스

UCLASS에 BlueprintType과 Blueprintable 속성을 수식하여 블루프린트로 생성할 수 있도록 설정한다

BroadcastInitialValues 함수의 로직을 위와 같이 구성한다
BroadcastAbilityInfo 함수를 호출하여 하위 UI들에게 GA와 관련한 정보를 브로드캐스트한다
7) AuraHUD 클래스

스탯창 UI를 설정하기 위한 멤버변수를 2개 추가한다


GetSpellMenuWidgetController 함수를 추가하여 위와 같이 구성한다
스탯창 UI를 Owner로 하여 스탯창 UI의 매니저를 생성하고 설정한다
- 블루프린트 사이드
1) BP_SpellMenuWidgetController 블루프린트

AbilityInfo 멤버변수를 설정한다
2) BP_AuraHUD 블루프린트

SpellMenuWidgetControllerClass 멤버변수를 위와 같이 설정한다
3) WBP_SpellGlobe_Button 위젯 블루프린트
해당 위젯은 스킬창에서 스킬을 담은 슬롯을 의미한다

WidgetControllerSet 이벤트의 로직을 위와 같이 구성하였다
BPSpellMenuWidgetController 멤버변수를 설정한 후에,
ReceiveAbilityInfo 함수를 해당 멤버변수의 AbilityInfoSignature 델리게이트에 바인드한다

ReceiveAbilityInfo 함수의 로직은 위와 같다
델리게이트의 인자로 전달된 AuraAbilityInfo를 통해 UI의 구성요소들을 설정한다
이후 "Abilities.Status" 태그의 값에 따라 스킬 슬롯을 표현한다
4) WBP_EquippedRow_Button 위젯 블루프린트
해당 위젯은 부여된 스킬의 슬롯을 의미한다

WidgetControllerSet 이벤트의 로직을 위와 같이 구성하였다
BPSpellMenuWidgetController 멤버변수를 설정한 후에,
ReceiveAbilityInfo 함수를 해당 멤버변수의 AbilityInfoSignature 델리게이트에 바인드한다

ReceiveAbilityInfo 함수의 로직은 위와 같다
델리게이트의 인자로 전달된 AuraAbilityInfo의 InputTag를 비교하여 부여된 스킬의 슬롯의 구성요소들을 설정한다
5) WBP_SpellMenu 위젯 블루프린트

Construct 이벤트의 3 / 4번째 시퀀스에 위의 로직을 추가한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 스킬창 UI - 5) 스킬 포인트와 스킬 창 UI 연결 (0) | 2025.11.02 |
|---|---|
| 스킬창 UI - 4) 플레이어 레벨과 스킬 연동 + 스킬과 스킬창 UI 연동 (0) | 2025.11.02 |
| 스킬창 UI - 2) 스킬창 UI Manager 클래스 + 구조 개선 (0) | 2025.10.31 |
| 스킬창 UI - 1) 스킬창 UI 구성 (0) | 2025.10.30 |
| 능력치 포인트 - 최종) (2) 블루프린트 사이드 (0) | 2025.10.26 |