- 개요
플레이어의 레벨에 따라 스킬 어빌리티의 상태를 변경하고, 변경된 상태를 스킬 창 UI에서 표현하도록 구성한다
- C++ 사이드
1) AuraGameplayTags 클래스


번개를 소환하는 스킬 어빌리티의 Tag를 새롭게 추가하고, 추가한 Tag를 실제로 생성한다
2) AbilityInfo 클래스

AuraAbilityInfo 구조체에 위와 같이 2개의 멤버변수를 추가한다
- LevelRequirement : 해당 스킬 어빌리티를 습득하기 위한 최소레벨
- Ability : 습득할 스킬의 GameplayAbility
3) AuraAbilitySystemComponent 클래스

AbilityStatusChanged 델리게이트를 새롭게 추가한다
해당 델리게이트는 스킬 어빌리티의 Tag + 스킬 어빌리티의 상태 Tag의 2개의 GameplayTag를 인자로 받으며
C++에서만 사용이 가능하며 1 : 多의 형태로 브로드캐스트를 진행한다

추가한 델리게이트를 위와 같이 멤버변수로 추가한다



또한 위와 같이 3개의 함수를 새롭게 추가한다

GetSpecFromAbilityTag 함수의 로직은 위와 같다
발동가능한 GA들을 순회하면서 인자로 받은 Tag와 일치하는 Tag를 지닌 GA의 GASpec을 반환한다

UpdateAbilityStatuses 함수의 로직은 위와 같다
AvatarActor로부터 AbilityInfo -> AbilityInformation을 가져와 AuraAbilityInfo를 순회한다
순회중인 AuraAbilityInfo에서 GetSpecFromAbilityTag 함수를 호출하여 GASpec을 가져올 수 있는지 확인한다
이후 다음의 로직을 진행한다
- GASpec을 가져와 AbilitySpec이라는 이름으로 저장
- AbilitySpec에 "Abilities.Status.Eligible"의 Tag를 수식하여 해당 어빌리티의 스킬을 부여할 수 있도록 설정
- GiveAbility 함수에 해당 AbilitySpec을 넘겨 어빌리티 부여
- MarkAbilitySpecDirty 함수에 해당 AbiltiySpec을 넘겨 어빌리티 변경 사항 기록
- ClientUpdateAbilityStatus 함수에 순회중인 대상의 AbilityTag와 Abilities.Status.Eligible를 넘겨 브로드캐스트

ClientUpdateAbilityStatus 함수에서는 AbilityStatusChanged 멤버변수를 통해 2개의 Tag를 브로드캐스트한다
4) AuraGameModeBase 클래스

AbilityInfo 멤버변수를 추가하여 게임에서 사용하는 스킬의 GA들에 GameMode도 접근할 수 있다
5) AuraAbilitySystemLibrary 클래스


GetAbilityInfo 함수를 추가하여 GameMode를 통해 AbilityInfo를 반환하도록 설정한다
6) SpellMenuWidgetController 클래스

BindCallbacksToDependencies 함수의 구성은 위와 같다
ASC의 AbilityStatusChanged 델리게이트에 람다 함수를 바인드한다
람다 함수의 로직은 다음과 같은데, AbilityInfo로부터 Tag에 맞는 AuraAbilityInfo를 가져온다
AuraAbilityInfo의 StatusTag를 설정하고, AbilityInfoDelegate 멤버변수를 통해 AuraAbilityInfo를 브로드캐스트한다
7) AuraCharacter 클래스

AddToPlayer 함수에 위의 로직을 추가한다
플레이어가 레벨업을 한 이후에, ASC의 UpdateAbilityStatuses 함수를 호출하고 플레이어의 레벨을 넘겨준다
- 블루프린트 사이드
1) GA_Electrocute 블루프린트

해당 GA의 AssetTags를 위와 같이 설정한다
2) DA_AbilityInfo 데이터애셋

GA_Electrocute에 관한 데이터들을 새롭게 데이터애셋에 추가한다
Level Requirement를 2로 설정하여 2 레벨에 해당 GA의 상태를 갱신한다
3) BP_AuraGameMode 블루프린트

AbilityInfo 멤버변수를 위와 같이 설정한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 스킬창 UI - 6) 스킬 포인트 사용 (0) | 2025.11.06 |
|---|---|
| 스킬창 UI - 5) 스킬 포인트와 스킬 창 UI 연결 (0) | 2025.11.02 |
| 스킬창 UI - 3) 스킬의 상태와 스킬창 UI 연동 (0) | 2025.11.01 |
| 스킬창 UI - 2) 스킬창 UI Manager 클래스 + 구조 개선 (0) | 2025.10.31 |
| 스킬창 UI - 1) 스킬창 UI 구성 (0) | 2025.10.30 |