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

간단한 어트리뷰트 설정 - 최종) 어트리뷰트 추가 및 간단한 테스트

monstro 2025. 7. 4. 17:50
728x90
반응형

- 개요

이전에 만든 AttributeSet 클래스에 4개의 어트리뷰트를 추가하고

해당 어트리뷰트를 사용할 수 있는지 간단하게 테스트한다

 

1) AuraAttributeSet 클래스

 

ATTRIBUTE_ACCESSORS 매크로를 추가하여 AttributeSet에 들어있는 Attribute들 대해

  • 어트리뷰트 그 자체에 대한 Getter
  • 어트리뷰트의 값에 대한 Getter
  • 어트리뷰트의 값에 대한 Setter
  • 어트리뷰트의 값에 대한 Initter

위의 4가지 요소를 사용할 수 있도록 설정한다

 

 

GetLifetimeReplicatedProps 함수를 추가하고 구현한다

해당 함수의 내부에서 레플케이션할 변수와 레플리케이션 방식을 설정한다

 

 

 

체력최대 체력, 마나최대 마나를 AttributeSet에 추가한다

추가한 Attribute들은 모두 레플리케이션되도록 설정하고 레플리케이션되면 호출하는 콜백 함수를 설정하였다

 

 

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

 

 

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

 

 

GetLifetimeReplicatedProps 함수에서는 멤버 변수들에 대한 레플리케이션의 동작을 정의한다

일단 모두 COND_NoneREPNOTIFY_Always로 설정하였다

  • COND_None : 해당 변수는 변경되면 조건없이 서버로 데이터를 전송하여 동기화된다
  • REPNOTIFY_Always : 서버로부터 데이터가 전달되면 항상 레플리케이션 콜백함수를 호출한다

 

 

서버로부터 어트리뷰트들이 레플리케이션되면 호출하는 콜백함수는 위와 같이 구성하였다

GAMEPLAYATTRIBUTE_REPNOTIFY 매크로를 사용하여 클라이언트에 의해 예측하여 값을 조정한다

 

2) AuraEffectActor 클래스

 

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

 

 

생성자에서 SceneComponentRootComponent로 설정한다

 

3) AuraEffectActor 블루프린트

 

추가한 Collision에 Overlap 이벤트를 추가한다

오버랩된 Actor를 캐스트하여 ASC를 가져오고 가져온 ASC로부터 Health 어트리뷰트를 가져온다

가져온 Health 어트리뷰트에 25를 더한 값을 출력한 후에 파괴한다

 

- 최종 실행 결과

 

728x90
반응형