728x90
반응형
- 개요
스킬 관련 GameplayAbility를 발동한 이후에 적용되는 쿨타임을 스킬 UI에서 표시한다
1) C++ 사이드
1 - 1) AbilityInfo 클래스

AuraAbilityInfo 구조체에 CooldownTag 멤버변수를 추가한다
해당 멤버변수를 설정하여 스킬 관련 어빌리티의 쿨타임의 Tag를 설정한다
1 - 2) WaitCooldownChange 클래스

해당 클래스의 UCLASS 수식자에 위와 같이 어트리뷰트를 추가한다
- BlueprintType : 클래스를 블루프린트에서 변수로 사용할 수 있도록 설정
- meta = (ExposedAsyncProxy = "AsyncTask") : AsyncTask 노드에서 클래스의 인스턴스를 Output으로 노출
2) 블루프린트 사이드
2 - 1) DA_AbilityInfo 데이터애셋

FireBolt 어빌리티의 Cooldown Tag를 위와 같이 설정한다
2 - 2) GE_Cooldown_FireBolt 블루프린트

FireBolt 어빌리티에 쿨타임을 적용하는 GameplayEffect에서 2초 동안 쿨타임을 적용하도록 설정한다
2 - 3) WBP_SpellGlobe 위젯 블루프린트

WidgetControllerSet 이벤트의 첫 번째 시퀀스 이후의 시퀀스들을 하나의 시퀀스로 통합하여 처리합니다..
- 첫 번째 로직 : BPOverlayWidgetController의 AbilityInfoDelegate에 ReceiveAbilityInfo 함수 바인드
- 델리게이트 인자로 전달된 AuraAbilityInfo를 통해 스킬 슬롯 UI의 아이콘 + 배경 설정
- 두 번째 로직 : 혹시 존재할 지 모를 WaitCooldownChange 인스턴스를 EndTask하여 제거
- 세 번째 로직 : BPOverlayWidgetController로부터 WaitCooldownChange 인스턴스를 생성
- 생성한 인스턴스를 통해 쿨타임의 변화를 감지
- 네 번째 로직 : 쿨타임이 변화되었다면, 해당 스킬 UI에서 쿨타임을 표시하고 배경을 어둡게 변경
- 최종 실행 결과
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 경험치와 레벨업 - 2) 경험치 Attribute (0) | 2025.10.24 |
|---|---|
| 경험치와 레벨업 - 1) LevelUpInfo 클래스를 통한 레벨 정의 (0) | 2025.10.23 |
| 코스트와 쿨타임 - 4) BlueprintAsyncActionReady 클래스를 사용한 어빌리티 쿨타임 설계 (0) | 2025.10.18 |
| 코스트와 쿨타임 - 3) 어빌리티와 UI 연동 마무리 + 어빌리티 비용 설정 (0) | 2025.10.18 |
| 코스트와 쿨타임 - 2) 어빌리티와 Tag 연동 + 어빌리티와 UI 연동 세팅 (0) | 2025.10.18 |