티스토리 뷰
Attribute Accessors
Attribute Set에 Health, MaxHealth, Mana, MaxMana 이렇게 4가지 Attrubte를 추가해주었으니, 이제 이 Attrubte들을 검색하거나 설정할 수 있는 접근자 함수에 대해 쉽게 만드는 방법을 알아볼 것이다.
보통 Attrubte 값은 코드에서 직접 수정하지 않고, Gameplay Effect를 통해 변경한다.
하지막 아직 Gameplay Effect를 다루지 않았기 때문에, 현재 단계에서는 일반 Setter로 코드에서 값을 설정해줄 것이다.
Attribute를 쉽게 다루기 위해 GAS에는 GAMEPLAYTTIRUBUTE_PROPERTY_GETTER()라는 편리한 매크로가 존재한다.
이 매크로는 클래스 이름(AttributeSet)과 Attribute 이름(Health) 2가지 입력을 받는다.
실제로 무엇을 하는지 확인하기 위해 정의로 이동을 해보면 내부 코드를 확인할 수 있다.
또 추가로 ㅁttribute에 접근하고 초기화하기 위한 헬퍼 함수들을 생성해준다는 설명이 존재한다.
즉, 이 매크로는 Attribute 관련 함수들을 자동 생성한다.


내부 코드를 보면 Getter 함수가 2개 인것을 볼 수 있다.
이는 반환하는 값의 차이로, Attribute 객체 자체를 반환하느냐, 반환 타입인 float 즉 실제 숫자 값을 반환하느냐의 차이이다.
SETTER와 INITTER의 경우에는 현재 값만 변경하느냐, Base 값을 설정하느냐의 차이이다.
후자의 경우 초기값 설정을 의미한다.
또한, 해당 매크로는 자동의 4개의 함수를 생성한다.
Health를 예시로 들면 다음과 같은 함수들이 생성된다.
1️.Attribute Getter
GetHealthAttribute()
2️.Value Getter
GetHealth()
3️.Setter
SetHealth()
4.Initializer
InitHealth()
이제 강의에서는 위 4개의 매크로를 한번에 쓰기 위해 새 매크로를 헤더 상단에 정의하였다.
이후에는 4가지의 매크로 중 원하는 것을 편리하게 사용할 수 있다.
또한 해당 매크로를 사용하기 위해서는 AbilitySystemComponent 헤더를 추가해주어야 한다.

매크로로 인해 생성된 함수를 통해 생성자에서 초기값도 설정할 수 있다.

이 상태로 실행하여 언리얼로 돌아가 설정된 값을 확인할 수 있다.
게임을 실행시킨 이후에 ~(물결표)를 눌러 콘솔창을 활성화 시킨 뒤, ShowDebug AbilitySystem을 작성하여 관련된 정보를 화면에 띄울 수 있다.

이제 나머지 속성들도 똑같은 작업을 거친 뒤, 컴파일 후 다시 체크해보자.



Attribute 값이 표시되지 않는 문제
처음 컴파일 후 실행했을 때, 디버그 화면(좌측 중앙)에 설정한 Attribute 값들이 표시되지 않는 문제가 발생했다.
원인을 확인하기 위해 관련 코드를 살펴본 결과, AuraPlayerState에서 AbilitySystemComponent를 생성할 때 AttributeSet 타입을 잘못 지정한 것을 발견했다.
원래는 UAuraAttributeSet으로 작성해야 하지만, 코드에서는 UAttributeSet 으로 작성되어 있었다.
이로 인해 Aura 프로젝트에서 정의한 AttributeSet이 AbilitySystemComponent와 제대로 연결되지 않았고,
결과적으로 설정한 Attribute 값들이 전달되지 않아 디버그 화면에도 표시되지 않았던 것이다.
수정 후 정상적으로 Attribute 값이 표시되는 것을 확인했다.
추가로 확인해보니 적 캐릭터에서도 동일한 실수가 있었고, 해당 부분 역시 동일하게 수정했다.

'Unreal > Udemy 강의' 카테고리의 다른 글
| Gameplay Ability System - Top Down RPG / Section 4-2 (0) | 2026.03.15 |
|---|---|
| Gameplay Ability System - Top Down RPG / Section 3-8 (0) | 2026.03.13 |
| Gameplay Ability System - Top Down RPG / Section 3-7 (0) | 2026.03.11 |
| Gameplay Ability System - Top Down RPG / Section 3-6 (0) | 2026.03.10 |
| Gameplay Ability System - Top Down RPG / Section 3-5 (0) | 2026.03.09 |
