보통 생각하는 방식은 캐릭터 클래스에 속성(hp, mp, ..)을 넣고,
캐릭터를 상속받는 클래스마다 속성을 하나씩 추가하게 되는데 이러면 비대해지고, 어떤 걸 상속받을지 모호한 경우가 생긴다
따라서 라이라에서는 이러한 캐릭터의 속성을 Attribute라는 클래스로 만들었다 (속성을 모듈화)
-> 캐릭터의 속성으로 인해 상속을 받을 일이 없어진다.
를 만들어보며 GameplayEffect와 Attribute를 이해해보자


GameplayEffectPad 액터 만들고..

hp와 관련된 속성 모음
FGameplayAttributeData
FGameplayAttributeData 클래스를 사용?
타 캐릭터의 힐이나 여기서 구현하는 GameplayEffectPad의 힐량이 BaseHeal에 적용되고,
이 값을 HealthSet의 Health에 더할 예정

참고로 AttributeSet은 AbilitySystemComponent와 동일한 시점에 생성한다
AbilitySystemComponent은 Outer에서 생성된 AttibuteSet을 내부적으로 알아서 저장한다.
따라서 PlayerState에서 AttributeSet이 생성하면 AbilitySystemComponent에 캐싱될 것

UGameplayEffectExecutionCaculation을 상속

필요한 Attribute를 미리 캡쳐해두고, (여기서는 CombatSet::BaseHeal)
Execute에 이를 통해 얻은 결과값을 HealthSet의 Healing에 더한다
(HealthSet 내부에서 알아서 Healing을 Health에 적용해준다. Execution에서 하지 않음)
UGameplayEffectExecutionCaculation
데미지, 힐량 등의 수치에 사칙연산을 제외한 추가적인 계산을 할 수 있게 한다

HealExecution을 적용한 Gameplay Effect 클래스 생성
한 번 CombatSet::BaseHeal에 1을 더한 값을 가져와 적용

GameplayEffectEffect_Heal 상속
1초마다 체력 1(CombatSet::BaseHeal에 1을 더한 값) 회복

GE_Heal_Periodic 상속
체력 1 > 체력 5(CombatSet::BaseHeal에 5을 더한 값) 회복만 변경됨
