모든 내용이 작성된 게 아니며, 조금씩 수정하며 내용을 덧댈 예정입니다.
Modifier
- 해당 GameplayEffect로 적용될 실제 효과 정의
- 여러 개 적용 가능
Attribute
Modifier Op
- Add - 규칙에 의해 정해진 수치를 더함, 음수 입력 가능
- Multyply - 현재 수치에 정해진 수치를 곱셈
- Divide - 나눔
- Override - Attribute의 Base Value를 정해진 수치로 변경
Modifier Magnitude
-
Scalable Float
- 수치를 직접 입력하거나 커브 테이블 이용 가능
- 커브 테이블을 할당하지 않을 경우, AbilitySystemComponent의 함수 MakeOutgoingSpec의 매개변수 Level의 값을 무시
- 커브 테이블 할당 시 매개변수 Level에 따라 적절한 값으로 입력됨
-
Attribute Based
- 다른 Attribute 수치를 기반으로 값을 입력
- Coefficient
- Pre Multiply Additive Value
- Post Multiply Additive Value
- Coefficient * ( Value + Pre ) + Post 로 최종 적용값이 계산됨
- Backing Attribute
- Attribute to Capture - 어떤 Attribute로 영향을 줄지 결정
- Attribute Source - 누구의 Attribute로 영향을 줄지 결정
- Snapshot
- true - Effect 적용 시에만 한 번 계산
- false - 관련 Attribute가 갱신될 때마다 이 Attribute도 갱신
-
Custom Calculation Class
- Attribute만이 아닌 외부의 값이 필요한 경우 사용
- UGameplayModMagnitudeCalculation을 상속받는 클래스를 만들어 사용 가능
- 멤버변수 FGameplayEffectAttributeCaptureDefinition를 선언해 사용
- 어떤 Attribute를, 누구로부터, 언제 가져올지 정의하는 구조체
- 선언 후 생성자에서 구조체 내부 변수들을 정의해 사용
- AttributeToCapture - 어떤 Attribute를 캡쳐할 것인지 결정
- AttributeSource - Source와 Target 중 누구에게서 가져올 것인지 결정
- bSnapshot - Attribute Based의 Snapshot과 동일
- 마지막으로 반드시 RelevantAttributesToCapture에 추가해야 함
- CalculateBaseMagnitude_Implementation을 재정의해 적용 규칙 생성
- FAggregatorEvaluateParameters를 통해 Effect 적용 여부 규칙을 설정함
- 매개변수 Spec에서 Source와 Target의 모든 태그를 가져와 할당해줘야 함
- AppliedTagFilter는 해당 태그를 정확히 일치하게 갖고 있어야 적용
- IgnoreHandles에 EffectHandle을 추가하면 그 EffectHandle을 가진 Modifier는 계산에서 제외됨.
- Attribute A가 있음.
- GameplayEffect B는 A를 10초 동안 10 증가시킴.
- GameplayEffect C의 Modifier 중 하나는 A의 영향을 받음.
- IgnoreHandles에 B의 Handle을 추가, 10이 증가되지 않은 값으로 계산
Source Tags, Target Tags
- 태그에 의한 필터링을 에디터 단계에서 적용 가능
- Require Tags
- Tag를 추가하면 해당 Tag를 가진 액터에만 Effect가 적용됨
- Ignore Tags
- Tag를 추가하면 해당 Tag를 가진 액터는 Effect가 적용되지 않음