언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

코스트와 쿨타임 - 최종) 쿨타임과 UI 연동

monstro 2025. 10. 19. 17:48
728x90
반응형

- 개요

스킬 관련 GameplayAbility를 발동한 이후에 적용되는 쿨타임을 스킬 UI에서 표시한다

 

1) C++ 사이드

1 - 1) AbilityInfo 클래스

AuraAbilityInfo 구조체

 

AuraAbilityInfo 구조체에 CooldownTag 멤버변수를 추가한다

해당 멤버변수를 설정하여 스킬 관련 어빌리티의 쿨타임의 Tag를 설정한다

 

1 - 2) WaitCooldownChange 클래스

UCLASS에 어트리뷰트 추가

 

해당 클래스의 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 이벤트의 로직 변경

 

WidgetControllerSet 이벤트의 첫 번째 시퀀스 이후의 시퀀스들을 하나의 시퀀스로 통합하여 처리합니다..

  • 첫 번째 로직 : BPOverlayWidgetControllerAbilityInfoDelegateReceiveAbilityInfo 함수 바인드
    • 델리게이트 인자로 전달된 AuraAbilityInfo를 통해 스킬 슬롯 UI의 아이콘 + 배경 설정
  • 두 번째 로직 : 혹시 존재할 지 모를 WaitCooldownChange 인스턴스EndTask하여 제거
  • 세 번째 로직 : BPOverlayWidgetController로부터 WaitCooldownChange 인스턴스를 생성
    • 생성한 인스턴스를 통해 쿨타임의 변화를 감지
  • 네 번째 로직 : 쿨타임이 변화되었다면, 해당 스킬 UI에서 쿨타임을 표시하고 배경을 어둡게 변경

 

- 최종 실행 결과

 

728x90
반응형