- 개요
MVC 모델에서 Model의 역할을 수행할 AttributeInfo 데이터애셋 클래스를 생성하고 설정한다
또 Controller의 역할을 수행할 AttributeMenuWidgetController 클래스를 생성한다
생성한 Controller 클래스를 HUD에서 사용하기 위해 로직을 추가하고
각 Widget의 블루프린트에서 적합한 Controller에 접근하기 위해
BlueprintFunctionLibrary 클래스를 추가하여 필요한 블루 프린트 함수들을 정의한다
1) MVC 모델 - Model 생성 및 설정
1 - 1) AttributeInfo 클래스의 헤더 파일

AuraAttributeInfo 구조체를 사용하여 Contorller에 필요한 데이터를 전달한다
구성은 다음과 같다
- 해당 Attribute의 GameplayTag
- 해당 Attribute의 이름
- 해당 Attribute에 대한 설명
- 해당 Attribute의 값

AttributeInfo는 Data Asset 클래스로서, 여러개의 AuraAttriuteInfo를 TArray 프로퍼티에 저장한다
FindAttributeInfoForTag 함수를 사용하여 인자로 받은 Tag와 일치하는 AuraAttriuteInfo를 반환한다
1 - 2) AttributeInfo 클래스의 cpp 파일

FindAttributeInfoForTag 함수의 로직은 위와 같다
TArray 프로퍼티를 순회하면서 인자로 받은 Tag와 일치하는 AuraAttriuteInfo를 반환한다
2) MVC 모델 - Controller 생성

스탯창 UI에 필요한 Controller 클래스를 생성하되 당장 로직을 구성하지는 않았다
3) HUD와 스탯창 UI의 Controller 연결
3 - 1) AuraHUD 클래스 헤더 파일


HUD와 스탯창 UI의 Controller를 연결하기 위한 함수와 프로퍼티를 추가하였다
3 - 2) AuraHUD 클래스 cpp 파일

GetAttributeMenuWidgetController 함수의 로직은 위와 같다
프로퍼티로 갖고 있는 Subclass를 통해 Controller를 생성하되, Owner를 AuraHUD로 설정한다
이후 Controller에서 사용하는 파라미터를 설정하고 콜백함수를 연결한다
4) BlueprintFunctionLibrary 클래스 설정
4 - 1) AuraAbilitySystemLibrary 클래스의 헤더 파일

AuraAbilitySystemLibrary 클래스를 새롭게 생성하였다
함수의 구성은 현재 다음과 같다
- MakeWidgetControllerParams : Controller에 필요한 파라미터를 설정하는 함수
- GetOverlayWidgetController : Widget 블루 프린트(Overlay)에서 Controller를 가져오기 위한 함수
- GetAttributeMenuWidgetController : Widget 블루 프린트(스탯창)에서 Controller를 가져오기 위한 함수
4 - 2) AuraAbilitySystemLibrary 클래스의 cpp 파일

MakeWidgetControllerParams 함수의 로직은 위와 같다
PlayerContoller를 가져오고 그 안에서 AuraHUD를 가져오는데 성공했다면,
인자로 받은 WidgetControllerParams의 구성요소를 설정한다

GetOverlayWidgetController 함수의 로직은 위와 같다
빈 WidgetControllerParams와 AuraHUD를 생성하고 MakeWidgetControllerParams 함수에 넘겨주어
WidgetControllerParams를 설정하는데 성공했다면 그 값을 이용하여
AuraHUD로부터 Overlay 위젯의 Controller를 반환한다

GetAttributeMenuWidgetController 함수의 로직은 위와 같다
빈 WidgetControllerParams와 AuraHUD를 생성하고 MakeWidgetControllerParams 함수에 넘겨주어
WidgetControllerParams를 설정하는데 성공했다면 그 값을 이용하여
AuraHUD로부터 스탯창 UI의 Controller를 반환한다
- 최종 결과

위와 같이 구성한 AttributeInfo의 데이터 애셋을 생성하였다

Overlay 위젯의 블루 프린트에서 AuraAbilitySystemLibrary의 함수를 문제없이 사용할 수 있다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| GameplayAbility - 1) Gameplay Ability에 대하여 (0) | 2025.08.08 |
|---|---|
| 스탯창 UI - 최종) 스탯창 UI와 AttributeSet의 연동 (0) | 2025.08.03 |
| 스탯창 UI - 2) Native한 GameplayTag + AssetManager (0) | 2025.08.01 |
| 스탯창 UI - 1) 스탯창 UI 애셋과 설계 구조 (0) | 2025.08.01 |
| RPG 게임의 능력치 - 최종) Modifier Magnitude Calculations 클래스 (0) | 2025.07.28 |