- 개요
플레이어가 레벨업하게 되면 능력치 포인트와 스킬 포인트를 얻어 사용할 수 있다
능력치 포인트를 통해 능력치를 상승시키고 이를 UI에 반영하도록 설계한다
1) AuraAbilitySystemComponent 클래스

능력치를 상승시키기 위한 2개의 함수를 새롭게 추가한다
이때 ServerUpgradeAttribute 함수는 클라이언트에서 호출하여 서버에서 수행하는 RPC 함수로 사용한다

UpgradeAttribute 함수의 로직은 위와 같다
ASC를 소유하고 있는 AvatarActor로부터 GetAttributePoints 함수를 호출하여
ServerUpgradeAttribute 함수를 호출하여 인자로 받은 GameplayTag를 넘겨준다

ServerUpgradeAttribute 함수의 로직은 위와 같다
AvatarActor를 대상으로 인자로 받은 Tag에 해당하는 이벤트를 발동하고, GameplayEventData를 넘겨준다
이후 AvatarActor로부터 AddToAttributePoints 함수를 호출하여 능력치 포인트를 1 감소시킨다
2) AuraAttributeSet 클래스

플레이어가 레벨업하게 되면 최대체력과 최대마나를 상승시킨다
이때 2개의 불리언 변수를 추가하여 상승여부를 판단한다

PostAttributeChange 함수에 위와 같이 로직을 추가한다
GE에 의해 Attribute가 수정된 이후에 불리언 변수를 false로 설정한다

HandleIncomingXP 함수에 위와 같이 로직을 추가한다
플레이어가 경험치를 얻어 레벨업하게 되는 경우 불리언 변수를 true로 설정한다
3) AuraPlayerState 클래스

능력치 포인트와 스킬 포인트의 변경을 브로드캐스트하기 위한 델리게이트를 2개 추가한다

위와 같이 능력치 포인트와 스킬 포인트에 대한 Getter / Setter / 값을 증감하는 함수를 추가한다

능력치 포인트를 의미하는 AttributePoints 멤버변수와 스킬 포인트를 의미하는 SpellPoints 멤버변수를 추가한다
2개의 멤버변수를 레플리케이션하는 경우 호출할 2개의 함수도 추가한다

GetLifetimeReplicatedProps 함수에 위의 로직을 추가한다
따라서 능력치 포인트와 스킬 포인트를 레플리케이션하도록 설정한다

능력치 포인트와 스킬 포인트를 증감하는 함수의 로직은 위와 같이 구성하였다
인자로 들어온 값을 각각의 포인트에 더하고, 연결된 델리게이트를 통해 각각의 포인트를 브로드캐스트한다

능력치 포인트와 스킬 포인트에 대한 Setter 함수의 로직은 위와 같이 구성하였다
인자로 들어온 값으로 각각의 포인트를 설정하고, 연결된 델리게이트를 통해 각각의 포인트를 브로드캐스트한다

능력치 포인트와 스킬 포인트에 대한 레플리케이션의 콜백 함수의 로직은 위와 같이 구성하였다
4) AuraWidgetController 클래스

공통적으로 사용하는 델리게이트를 자식 클래스에서 부모 클래스인 AuraWidgetController 클래스로 이주하였다
5) AttributeMenuWidgetController 클래스

스탯창 UI에 배정되는 AttributeMenuWidgetController 클래스에 능력치를 수정하는 경우 브로드캐스트하기 위한
AttributePointsChangedDelegate 델리게이트와 UpgradeAttribute 함수를 추가하였다

BindCallbacksToDependencies 함수에 위와 같이 로직을 추가한다
PlayerState의 OnAttributePointsChangedDelegate 델리게이트에
AttributePointsChangedDelegate 멤버변수 델리게이트를 브로드캐스트하는 로직을 바인드한다

스탯창 UI를 구성하는 값을 초기화하는 BroadcastInitialValues 함수에 위와 같이 로직을 추가한다
AttributePointsChangedDelegate 델리게이트를 통해 능력치 포인트를 브로드캐스트한다

UpgradeAttribute 함수의 로직은 위와 같다
ASC로부터 UpgradeAttribute 함수를 호출하여 UI와 연결된 Tag의 이벤트를 발동 + 능력치 포인트를 1 감소시킨다
6) PlayerInterface 클래스


능력치 포인트와 스킬 포인트를 가져오는 함수를 2개 추가한다
7) AuraCharacter 클래스

추가한 2개의 함수를 오버라이드한다

이전에 작성만 해놓은 능력치 포인트와 스킬 포인트를 증감하는 함수와 새롭게 추가한 가져오는 함수를 작성한다
각각 PlayerState로부터 적합한 함수를 호출하여 동작한다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 스킬창 UI - 1) 스킬창 UI 구성 (0) | 2025.10.30 |
|---|---|
| 능력치 포인트 - 최종) (2) 블루프린트 사이드 (0) | 2025.10.26 |
| 경험치와 레벨업 - 최종) 레벨과 UI 연동 (0) | 2025.10.25 |
| 경험치와 레벨업 - 3) 레벨업 구현과 경험치 바 UI (0) | 2025.10.24 |
| 경험치와 레벨업 - 2) 경험치 Attribute (0) | 2025.10.24 |