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

스탯창 UI - 최종) 스탯창 UI와 AttributeSet의 연동

monstro 2025. 8. 3. 17:40
728x90
반응형

- 개요

AttributeSet 새로운 TMap 프로퍼티를 추가한다

특정 Attribute에 대한 GameplayTagKey, Attribute에 대한 Getter 함수Value로 구성한다

Attribute의 값이 변경될 때마다 해당 TMap을 사용하여 View(스탯창 UI)를 갱신하도록 설정한다

 

또, 스탯창 UI의 Controller AttributeMenuWidgetController 클래스의 

비어있던 로직을 구성하여 Model에 있는 데이터의 값View에 반영할 수 있도록 설정한다

 

마지막으로 View스탯창 UI의 블루 프린트에 로직을 추가하여

필요한 데이터를 설정하는 과정을 진행한다

 

1) Model - AuraAttributeSet 클래스

 

우선, template 포인터TStaticFuncPtr을 추가한다

표시한 BaseStaticDelegateInstance정적 함수에 바인딩된 델리게이트 인스턴스를 의미하는 클래스인데,

static 함수에 대한 델리게이트를 정의할 때 사용할 수 있다

프로젝트에서 해당 포인터는 Attribute에 대한 Getter 함수에 바인딩된 델리게이트로서 사용한다

 

***

언리얼 엔진에서 델리게이트함수 포인터로서 사용이 가능하다

***

 

 

TagsToAttributes 프로퍼티를 추가한다

해당 프로퍼티는 TMap으로서 특정 Attribute에 대한 TagGetter 함수를 연결하여 저장한다

 

 

생성자에서 TagsToAttributes 프로퍼티Attribute들에 대한 GameplayTagGetter 함수를 저장한다

 

2) Controller - AttributeMenuWidgetController 클래스

 

AttributeInfo에 저장된 AuraAttributeInfo를 인자로 받는 AttributeInfoSignature 델리게이트를 추가한다

해당 델리게이트를 통해 AuraAttributeInfo의 변경이 발생하면 이를 View에 전파할 수 있다

 

 

추가한 델리게이트를 프로퍼티로 추가한다

 

 

Model의 데이터Controller에서 참조할 수 있도록 프로퍼티로 추가한다

 

 

델리게이트 프로퍼티에 바인드된 함수데이터를 Broadcast하는 BroadcastAttributeInfo 함수를 추가한다

 

 

BroadcastAttributeInfo 함수의 로직은 위와 같다

인자로 받은 GameplayTag를 바탕으로 프로퍼티의 AttributeInfo에서 AuraAttributeInfo를 가져오고,

가져온 AuraAttributeInfo의 값인자로 받은 Attribute의 값으로 설정한다

델리게이트 프로퍼티를 통해 설정이 끝난 AuraAttributeInfo를 브로드캐스트한다

 

 

BindCallbacksToDependencies 함수의 로직은 위와 같다

AuraAttributeSet에서 TagsToAttributes를 가져와 순회하면서,

GetGameplayAttributeValueChangeDelegate 델리게이트순회중인 PairValue를 넘겨준다

해당 델리게이트어트리뷰트가 변경되면 바인드된 콜백 함수를 호출하는데, 

람다를 사용하여 순회중인 Pair에 대해서 BroadcastAttributeInfo 함수를 호출하도록 설정하였다

 

 

BroadcastInitialValues 함수의 로직은 위와 같다

AuraAttributeSet을 가져오고 다시, TagsToAttributes 프로퍼티를 가져온다

가져온 프로퍼티를 순회하면서 BroadcastAttributeInfo 함수를 호출한다

 

***

따라서 다음과 같이 정리할 수 있다

  • BindCallbacksToDependencies 함수 : Attribute에 대한 변경사항브로드캐스트하는 용도
  • BroadcastInitialValues 함수 : 변경되지 않은 Attribute의 기초값브로드캐스트하는 용도

***

 

3) View - WBP_AttributeMenu 블루프린트

 

Event Graph 시퀀스를 추가하고 위와 같이 3개의 로직을 추가한다

구성은 다음과 같다

  • 스탯창 UI에 포함된 각각의 스탯을 보여주는 Row에 대한 Tag를 설정
  • 위젯의 Controller를 설정하고 서브 위젯의 Controller를 설정
  • 설정된 위젯의 Controller를 통해 Model의 기초값을 브로드캐스트

 

 

 

스탯창 UI에 대한 Controller의 프로퍼티를 설정한다

 

 

HUD 블루프린트에서 설정한 Controller를 프로퍼티로 사용한다

 

- 최종 실행 결과

 

728x90
반응형