GameplayEffect Modifier

김지윤·2025년 5월 12일
0

UE5_GAS

목록 보기
6/22

모든 내용이 작성된 게 아니며, 조금씩 수정하며 내용을 덧댈 예정입니다.

Modifier

  • 해당 GameplayEffect로 적용될 실제 효과 정의
  • 여러 개 적용 가능

Attribute

  • 영향을 줄 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는 계산에서 제외됨.
          1. Attribute A가 있음.
          2. GameplayEffect B는 A를 10초 동안 10 증가시킴.
          3. GameplayEffect C의 Modifier 중 하나는 A의 영향을 받음.
          4. IgnoreHandles에 B의 Handle을 추가, 10이 증가되지 않은 값으로 계산

Source Tags, Target Tags

  • 태그에 의한 필터링을 에디터 단계에서 적용 가능
  • Require Tags
    • Tag를 추가하면 해당 Tag를 가진 액터에만 Effect가 적용됨
  • Ignore Tags
    • Tag를 추가하면 해당 Tag를 가진 액터는 Effect가 적용되지 않음
profile
공부한 거 시간 날 때 작성하는 곳

0개의 댓글