언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

데미지 처리 심화 - 3) 사용자 정의 AbilitySystemGlobals 클래스 & 사용자 정의 GEContext 클래스의 사용

monstro 2025. 9. 12. 23:47
728x90
반응형

- 개요

AbilitySystemGlobals 클래스는 GAS에서 사용하는 전역변수 / 전역함수를 관리하는 클래스이다

따라서 해당 클래스의 AllocGameplayEffectContext 함수를 오버라이드하여

사용자 정의 GEContext의 새로운 인스턴스를 반환한다

반환된 사용자 정의 GEContext 인스턴스를 사용하여 공격의 방어 + 크리티컬 피해를 처리한다

 

1) 사용자 정의 AbilitySystemGlobals 클래스

1 - 1) AuraAbilitySystemGlobals 클래스

 

AbilitySystemGlobals 클래스를 상속받아 AuraAbilitySystemGlobals 클래스를 생성하여 구성하였다

 

 

AllocGameplayEffectContext 함수의 로직은 위와 같은데, 

새로운 AuraGameplayEffectContext의 인스턴스를 반환한다

 

1 - 2) DefaultGame.ini 또는 에디터

 

ini 파일에서 위와 같이 작성하거나, 에디터에서 AbilitySystemGlobals 클래스를 설정한다

 

2) 사용자 정의 AbilitySystemGlobals 클래스의 활용

2 - 1) AuraAbilitySystemLibrary 클래스

 

위와 같이 4개의 함수를 추가한다

  • 공격을 방어하는 경우의 Getter 함수 / Setter 함수
  • 크리티컬 공격을 주는 경우의 Getter 함수 / Setter 함수

 

 

Getter 함수들의 로직은 위와 같다

AuraGameplayEffectContext로부터 Getter 함수를 호출하여 을 반환한다

 

 

Setter 함수들의 로직은 위와 같다

AuraGameplayEffectContext로부터 Setter 함수를 호출하여 을 설정한다

 

2 - 2) ExecCalc_Damage 클래스

 

Execute_Implementation 함수에서 공격을 방어하는 확률 / 크리티컬 피해를 주는 확률의 값

AuraAbilitySystemLibrary의 함수를 호출하여 AuraEffectContext의 멤버변수에 설정하는 로직을 추가한다

 

2 - 3) AuraAttributeSet 클래스

 

기존의 ShowFloatingText 함수에 2개의 인자를 추가한다

 

 

HandleIncomingDamage 함수의 로직에서 AuraEffectContext -> AuraAbilitySystemLibrary를 거쳐

공격이 방어되었는지 여부 / 크리티컬 공격이 이루어졌는지 여부를 인자로 전달하도록 로직을 수정한다

728x90
반응형