- 개요
Attribute Set에 새로운 능력치를 대거 추가하고 레벨을 추가하여
플레이어 캐릭터와 몬스터 캐릭터가 레벨에 따라 다른 동작을 수행할 수 있도록 로직을 작성한다
1) 새로운 능력치 추가
1 - 1) AuraAttributeSet 클래스


AttributeSet에 새로운 능력치를 추가하고 추가한 Attribute별로 Replication을 위한 콜백함수를 추가한다

GetLifeTimeReplicatedProps 함수에서 DOREPLIFETIME_CONDITION_NOTIFY 매크로를 사용하여
추가한 Attribute 별로 Replication 모드를 설정한다

추가한 Attribute의 Replication 콜백 함수의 로직은 위와 같다
GAMEPLAYATTRIBUTE_REPNOTIFY 매크로를 사용하여 Attribute가 변경되면 Replication한다
1 - 2) AuraCharacterBase 클래스

2개의 프로퍼티를 추가한다
- DefaultSecondaryAttributes : 새롭게 추가한 Attribute를 초기화하는 GameplayEffect
- DefaultVitalAttributes : Health / Mana 어트리뷰트를 초기화하는 GameplayEffect

InitializeDefaultAttributes 함수에 추가한 2개의 GameplayEffect 프로퍼티를 적용하는 로직을 추가한다
2) 레벨 시스템 추가
2 - 1) CombatInterface 클래스

플레이어의 레벨을 가져올 수 있는 GetPlayerLevel 함수를 생성한다
BlueprintNativeEvent 속성을 설정하여 C++에서 로직을 정의하되, 블루 프린트에서 오버라이드하도록 설정한다
2 - 2) AuraCharacterBase 클래스

상속 구조에 CombatInterface를 추가하여 자식 클래스에서 GetPlayerLevel 함수를 오버라이드하도록 설정한다
2 - 3) AuraPlayerState 클래스



PlayerState에 레벨을 추가하고 레벨을 Replication하기 위한 함수를 추가한다

GetLifetimeReplicatedProps 함수에 DOREPLIFETIME 매크로를 사용하여 레벨을 Replicate하도록 설정한다
또 레벨이 Replicate되는 경우 호출하는 OnRep_Level 함수는 정의만 하고, 아직 로직을 작성하지는 않는다
2 - 4) AuraEnemy 클래스

CombatInterface로부터 상속받은 GetPlayerLevel 함수를 오버라이드한다

또 몬스터의 능력치를 설정하기 위한 Level 프로퍼티를 추가한다

GetPlayerLevel 함수를 오버라이드하여 프로퍼티 Level을 리턴하도록 설정한다
2 - 5) AuraCharacter 클래스

몬스터와 동일하게 CombatInterface의 함수를 오버라이드한다

오버라이드된 로직은 위와 같다
PlayerState를 가져오고 PlayerState로부터 GetPlayerLevel 함수를 호출한다
- 최종 실행 결과

위와 같이 새롭게 추가한 Attribute들이 설정된 것을 볼 수 있다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 스탯창 UI - 1) 스탯창 UI 애셋과 설계 구조 (0) | 2025.08.01 |
|---|---|
| RPG 게임의 능력치 - 최종) Modifier Magnitude Calculations 클래스 (0) | 2025.07.28 |
| RPG 게임의 능력치 - 3) Attribute Based 모디파이어 (0) | 2025.07.27 |
| RPG 게임의 능력치 - 1) Attribute를 초기화하는 방법 (0) | 2025.07.25 |
| GameplayTags - 최종) GameplayEffect의 Tag로 UI 띄우기 (0) | 2025.07.25 |