728x90
반응형
- 개요
GameplayEffect는 런타임 시점에서 GameplayEffectSpec으로 생성되어 대상에게 적용된다
이때 GameplayEffectSpec만으로는 정보가 부족하기 때문에 GameplayEffectContext를 사용한다
GamplayEffectContext는 구조체로서,
GESpec 말고도 해당 GESpec을 생성한 Instigator나, GESpec이 적용될 Target을 저장한다
단, GameplayEffectContext에 접근하기 위해서는 GameplayEffectContextHandle 래퍼 클래스를 사용한다
1) SpawnProjectile 클래스

AuraProjectileSpell 클래스의 SpawnProjectile 함수를 위와 같이 수정하였다
GameplayEffectContextHandle을 사용하여 GameplayEffectContext를 설정한다
- 해당 GameplayEffect를 동반하는 GameplayAbility 저장
- 해당 GE를 생성한 SourceObject 저장
- 해당 GE와 관련된 Actor 저장
- 해당 GE를 적용할 타겟을 탐색하기 위한 HitResult 저장
2) AuraAbilityTypes 클래스 - AuraGameplayEffectContext 구조체

GameplayEffectContext 구조체를 상속받은 AuraGameplayEffectContext 구조체를 생성한다
멤버 변수는 다음과 같이 구성하였다
- bIsBlockedHit : 공격받은 대상이 공격을 방어했는지 여부
- bIsCriticalHit : 공격받은 대상이 크리티컬 피해를 받았는지 여부
멤버 함수의 구성은 다음과 같다
- IsCriticalHit 함수 / SetIsCriticalHit 함수 : bIsCriticalHit 멤버변수에 대한 Getter / Setter
- IsBlockedHit 함수 / SetIsBlockedHit 함수 : bIsBlockedHit 멤버변수에 대한 Getter / Setter
- GetScriptStruct 함수 : 자식 클래스에서 오버라이드해야 하는 함수로서, 자식 클래스의 static 인스턴스 반환
- NetSerialize 함수 : 자식 클래스에서 오버라이드해야 하는 함수로서, 담겨진 정보를 직렬화하는 용도

NetSerialize 함수의 로직은 일단, 위와 같이 구성하였다
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 데미지 처리 심화 - 3) 사용자 정의 AbilitySystemGlobals 클래스 & 사용자 정의 GEContext 클래스의 사용 (0) | 2025.09.12 |
|---|---|
| 데미지 처리 심화 - 2) NetSerialize 함수 오버라이드 & 사용자 정의 GEContext에 대한 복사 연산 허용 (0) | 2025.09.12 |
| 데미지 처리 - 최종) 능력치를 고려한 데미지 처리 (0) | 2025.08.30 |
| 데미지 처리 - 4) ExecutionCalculation 클래스 적용 (0) | 2025.08.28 |
| 데미지 처리 - 3) 입은 데미지의 시각화 + 죽음 처리 (0) | 2025.08.28 |