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

스킬창 UI - 2) 스킬창 UI Manager 클래스 + 구조 개선

monstro 2025. 10. 31. 12:20
728x90
반응형

- 개요

스킬창 UI Manager 클래스를 추가하고, 코드 구조를 일부 수정한다

 

1) AuraAbilitySystemComponent 클래스

델리게이트 수정

 

어빌리티가 부여되면 브로드캐스트하는 AbilitiesGiven 델리게이트에서 인자를 제거한다

 

AddCharacterAbilities 함수

 

OnRep_ActivateAbilities 함수 수정

 

따라서 위와 같이 AbilitiesGivenDelegate에서 인자를 제거하고 브로드캐스트하도록 수정한다

 

2) AuraWidgetController 클래스

 

 

OverlayWidgetController에 존재했던 AbilityInfoDelegate 변수와 AbilityInfo 변수를 상위 클래스로 옮겨준다

 

 

새롭게 추가한 BroadcastAbilityInfo 함수의 로직은 위와 같다

기초적인 GA가 부여되었다면 로직을 진행한다

ForEachAbility 델리게이트 인스턴스를 생성하고 해당 인스턴스에 람다 함수를 바인드한다

  • AbilityInfo 멤버변수로부터 GASpec의 Tag -> 해당 Tag와 연결된 AuraAbilityInfo를 반환
  • GASpec의 InputTag를 가져와 반환된 AuraAbilityInfo의 InputTag를 설정
  • AbilityInfoDelegate 멤버변수에 설정이 끝난 AuraAbilityInfo를 인자로 넘겨 브로드캐스트

 

위와 같이 구성된 람다 함수가 바인드된 ForEachAbility 델리게이트 인스턴스ASC의 ForEachAbility 함수에 넘겨준다

ForEachAbility 델리게이트 인스턴스에 바인드되어 있다면 ASC에서 발동가능한 GASpec을 인자로 넘겨 실행한다

 

3) OverlayWidgetController 클래스

BindCallbacksToDependencies 함수 수정

 

BindCallbacksToDependencies 함수를 위와 같이 수정한다

기존의 AuraASC를 가져오는 로직을 Getter 함수를 호출하여 수행하는 방식으로 수정한다

또, OnInitializeStartupAbilities 멤버함수를 바인드하지 않고, BroadcastAbilityInfo 함수를 바인드하여

발동가능한 GASpec을 바탕으로 AuraAbilityInfo를 설정하여 UI를 갱신할 수 있도록 개선한다

 

4) SpellMenuWidgetController 클래스

 

스킬창 UI에서 사용하는 컨트롤러SpellMenuWidgetController 클래스를 생성한다

함수의 구성은 위와 같고, 선언만 진행하였다

 

- 최종 실행 결과

 

기존과 동일하게 서버와 클라이언트 모두 스킬 UI가 설정되는 것을 확인할 수 있다

728x90
반응형