이번에는 Effect Stacking에 대해 알아보겠습니다.
동일한 GE가 중복되어 적용되는 것을 Effect Stacking이라고 하는데,
적용되는 방식으로 크게 2가지로 구분할 수 있습니다.
1) Aggregate by Source
GE를 적용하는 Source를 Stack 대상으로 삼아 동작합니다.
GE를 적용할 때마다 Stack에 Count를 하나씩 쌓아 놓게 됩니다.
이때 Stack Limit Count라는 Count의 제한 범위를 두는데
만약, Stack에 쌓인 Count의 수가 Stack Limit Count와 동일하다면 그 이후의 GE는 적용하지 않습니다.
2) Aggregate by Target
GE를 적용하는 Target을 Stack 대상으로 삼아 동작합니다.
GE가 적용될 때마다 Stack에 Count를 하나씩 쌓아 놓게 됩니다.
마찬가지로 Stack Limit Count라는 Count의 제한 범위를 두는데
만약, Stack에 쌓인 Count의 수가 Stack Limit Count와 동일하다면 그 이후의 GE는 적용되지 않습니다.
Gameplay Effect에서 Effect Stacking을 사용할 때
설정하는 여러 정책이 존재합니다.
정책들은 다음과 같이 구성되어 있습니다.
1) Stack Duration Refresh Policy
Stacking이 발생하면 Duration을 어떻게 초기화할지를 결정합니다.
Refresh on Successful Application을 선택하면 Duration을 초기화하여 0부터 시작하지만,
Nerver Refresh를 선택하면 적용된 Duration부터 시작합니다.
2) Stack Period Refresh Policy
Stacking이 발생하면 Period를 초기화할지를 결정합니다.
Refresh on Successful Application을 선택하면 다음 Period 전까지는 GE를 적용하지 않지만,
Nerver Refresh를 선택하면 진행된 Period부터 바로 GE를 적용합니다.
3) Stack Expiration Policy
GE가 끝난후 Stack에 관련된 정책을 결정합니다.
Clear Entire Stack은 GE가 끝나면 Stack의 모든 Count를 정리합니다.
Remove Single Stack and Refresh Duration은 GE가 끝나면
Stack의 Count를 하나 지우고, Duration을 다시 시작합니다.
Refresh Duration은 Duration만 다시 시작하는데 주로 Inifinite GE에 사용합니다.
1) 언리얼 에디터
이제 기존에 만든 GE들에 Stacking을 설정하겠습니다.
체력을 회복하는 GE_CrystalHeal의 경우 다음과 같이 구성하였습니다.
Target을 Stack으로 삼고
최대 Count 개수를 1로 설정합니다.
Duration, Period, Expiration 정책은 위와 같이 설정하였습니다.
GE가 성공적으로 적용되면 Duration을 0부터 시작합니다.
마찬가지로 Period도 다음 Period부터 GE를 적용합니다.
마지막으로 GE가 끝나면 Stack의 모든 Count를 지우겠습니다.
마나를 회복하는 GE_CrystalManaHeal의 경우 다음과 같이 구성하였습니다.
GE_CrystalHeal과 동일하게 구성하였습니다.