1. 레벨업 시 체력 마나 회복 버그
레벨업을 하면 체력과 마나가 최댓값으로 변경되어야 한다.
디버그를 실시하면 MMC_MaxHealth가 Max Health의 기본값(Base Value)가 아닌 현재값(Current Value)를 수정하고 있음을 알 수 있다.
레벨업으로 인해 MaxHealth와 MaxMana가 변동되면 해당 값을 가져와 회복하도록 할 것이다.
virtual void PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue) override;
// 레벨업 체크
bool bTopOffHealth = false;
bool bTopOffMana = false;
레벨업을 체크하여 체력과 마나를 가득 채워야하는지 판단하는 불리언을 선언한다.
void UAuraAttributeSet::PostAttributeChange(const FGameplayAttribute& Attribute, float OldValue, float NewValue)
{
Super::PostAttributeChange(Attribute, OldValue, NewValue);
// 레벨업 체크 불리언
if (Attribute == GetMaxHealthAttribute() && bTopOffHealth)
{
SetHealth(GetMaxHealth());
bTopOffHealth = false;
}
if (Attribute == GetMaxManaAttribute() && bTopOffMana)
{
SetMana(GetMaxMana());
bTopOffMana = false;
}
}
PostAttributeChange 함수는 속성의 변화가 발생한 이후에 발동되는 함수이다.
레벨업으로 인해 최대 체력과 최대 마나의 값이 변동되면 위의 함수를 실행하게 된다.
2. 설정되지 않은 Magnitude 오류 로그
레벨업을 하면 아래의 오류 로그가 발생한다.
레벨업 이후 속성 포인트를 사용하여 속성의 레벨을 올리도록 설정했었다.
해당 어빌리티의 게임플레이 이펙트가 이펙트 스펙을 만들어 Set by Caller Magnitude를 적용할 때 Magnitude가 설정되지 않으면 발생하는 오류이다.
이전에서는 C++에서 계산했기 때문에 함수에 불리언을 false로 넘겨 로그를 출력하지 않게 했으나, 블루프린트에서는 그런 기능이 없다.
17-13. 전투 폴리싱 - (9) 몬스터 파이어볼트 각도, 메모리 누수, 디버그
1. 몬스터 파이어볼트 각도몬스터가 발사하는 파이어볼트가 높이 날아가는 버그가 있다.몬스터의 파이어볼트는 GA_EnemyFirebolt를 사용하고 있으며, 이 파이어볼트의 부모 어빌리티는 GA_RangedAttack
crat.tistory.com
따라서 오류를 제거하기 위해 게임플레이 태그에 대한 배열을 순회하여 전달받은 이벤트에 대한 태그를 제외한 항목의 Magnitude를 0으로 설정할 것이다.
(1) 멤버 변수로 승격
전달받은 Payload의 태그와 Magnitude, 게임플레이 이펙트 스펙을 멤버 변수로 저장한다.
EventTag 배열은 수신받고 있는 속성으로 채운다.
(2) 배열 순회
배열을 순회하여 배열의 태그가 이벤트 태그와 정확히 일치할 때만 Set by Caller Magnitude를 설정한다.
일치하지 않으면 Magnitude를 0으로 지정한다.
완료되면 완성된 이펙트 스펙을 본인에게 적용한다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
22-1. 스펠 메뉴 UI - (1) 스펠 글로브 버튼, 액티브 & 패시브 스펠 트리 (0) | 2025.01.22 |
---|---|
21-5. 속성 메뉴 UI - (9) 속성 메뉴 개선, 버튼 소리 추가 (0) | 2025.01.20 |
21-3. 속성 포인트 - (2) 속성 포인트를 사용하여 속성 값 올리기 (0) | 2025.01.20 |
21-2. 속성 메뉴 UI - (8) 속성 포인트 올리기 버튼 (0) | 2025.01.20 |
21-1. 속성 포인트 / 스펠 포인트 - (1) 멤버 변수화, 델리게이트 선언, 람다 함수 바인드 (0) | 2025.01.20 |