- 개요
이전에 만든 AttributeSet 클래스에 4개의 어트리뷰트를 추가하고
해당 어트리뷰트를 사용할 수 있는지 간단하게 테스트한다
1) AuraAttributeSet 클래스

ATTRIBUTE_ACCESSORS 매크로를 추가하여 AttributeSet에 들어있는 Attribute들에 대해
- 어트리뷰트 그 자체에 대한 Getter
- 어트리뷰트의 값에 대한 Getter
- 어트리뷰트의 값에 대한 Setter
- 어트리뷰트의 값에 대한 Initter
위의 4가지 요소를 사용할 수 있도록 설정한다

GetLifetimeReplicatedProps 함수를 추가하고 구현한다
해당 함수의 내부에서 레플케이션할 변수와 레플리케이션 방식을 설정한다


체력과 최대 체력, 마나와 최대 마나를 AttributeSet에 추가한다
추가한 Attribute들은 모두 레플리케이션되도록 설정하고 레플리케이션되면 호출하는 콜백 함수를 설정하였다

Attribute들의 레플리케이션에 사용하는 콜백함수들은 위와 같다

AttributeSet의 생성자에서는 Initter를 사용하여 추가한 어트리뷰트들을 초기화한다

GetLifetimeReplicatedProps 함수에서는 멤버 변수들에 대한 레플리케이션의 동작을 정의한다
일단 모두 COND_None과 REPNOTIFY_Always로 설정하였다
- COND_None : 해당 변수는 변경되면 조건없이 서버로 데이터를 전송하여 동기화된다
- REPNOTIFY_Always : 서버로부터 데이터가 전달되면 항상 레플리케이션 콜백함수를 호출한다

서버로부터 어트리뷰트들이 레플리케이션되면 호출하는 콜백함수는 위와 같이 구성하였다
GAMEPLAYATTRIBUTE_REPNOTIFY 매크로를 사용하여 클라이언트에 의해 예측하여 값을 조정한다
2) AuraEffectActor 클래스

추가한 Attribute들이 정상동작하는지 판단하기 위한 Actor 클래스를 생성하였다

생성자에서 SceneComponent를 RootComponent로 설정한다
3) AuraEffectActor 블루프린트

추가한 Collision에 Overlap 이벤트를 추가한다
오버랩된 Actor를 캐스트하여 ASC를 가져오고 가져온 ASC로부터 Health 어트리뷰트를 가져온다
가져온 Health 어트리뷰트에 25를 더한 값을 출력한 후에 파괴한다
- 최종 실행 결과
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| RPG 게임 UI - 2) OverlayWidgetController 생성 및 설정 (0) | 2025.07.12 |
|---|---|
| RPG 게임 UI - 1) UI의 설계와 HUD 구성 (0) | 2025.07.07 |
| GAS 프레임워크 도입 - 최종) OwnerActor와 AvatarActor 설정 (0) | 2025.06.30 |
| GAS 프레임워크 도입 - 2) Replication 모드 설정 (0) | 2025.06.29 |
| GAS 프레임워크 도입 - 1) ASC와 AttributeSet 추가 및 설정 (0) | 2025.06.29 |