1. 커스텀 어빌리티 시스템 글로벌(Aura Ability System Globals)
어빌리티 시스템 글로벌은 GAS 내에서 전역 변수 등에 쉽게 접근할 수 있도록하는 싱글톤 클래스이다.
이 클래스를 오버라이딩하여 게임플레이 큐 등을 프로젝트에 맞게 발동하는 등이 가능하다.
(1) 코드
ASC에서 MakeEffectContext 함수 내에서 게임플레이 이펙트 컨텍스트 핸들을 실질적으로 생성할 때 어빌리티 시스템 글로벌에 접근한다.
FGameplayEffectContextHandle Context = FGameplayEffectContextHandle(UAbilitySystemGlobals::Get().AllocGameplayEffectContext();
이 부분을 변형하여 컨텍스트 핸들을 생성할때 커스텀 어빌리티 시스템 글로벌을 이용하여 커스텀 게임플레이 이펙트 컨텍스트를 사용할 수 있도록 할 것이다.
#pragma once
#include "CoreMinimal.h"
#include "AbilitySystemGlobals.h"
#include "AuraAbilitySystemGlobals.generated.h"
UCLASS()
class AURA_API UAuraAbilitySystemGlobals : public UAbilitySystemGlobals
{
GENERATED_BODY()
virtual FGameplayEffectContext* AllocGameplayEffectContext() const override;
};
#include "AbilitySystem/AuraAbilitySystemGlobals.h"
#include "AuraAbilityTypes.h"
FGameplayEffectContext* UAuraAbilitySystemGlobals::AllocGameplayEffectContext() const
{
return new FAuraGameplayEffectContext();
}
(2) 컨피그 파일 수정 - Config/DefaultGame.ini
[/Script/GameplayAbilities.AbilitySystemGlobals]
+AbilitySystemGlobalsClassName="/Script/Aura2.AuraAbilitySystemGlobals"
프로젝트 이름에 맞게 해당 내용을 추가한다.
이제 속성 세트에서 글로벌을 통해 게임플레이 이펙트 컨텍스트에 접근할 수 있게 되었다.
즉 bIsBlocked와 bIsCriticalHit에 접근할 수 있게 되었으므로 해당 변수를 이용하여 UI에 강조 표시하는 등의 행위가 가능하다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
12-5. UI - (9) 색이 있는 데미지 텍스트 띄우기 (0) | 2024.12.26 |
---|---|
12-4. 게임플레이 이펙트 컨텍스트 - (3) 활용 (0) | 2024.12.24 |
12-2. 게임플레이 이펙트 컨텍스트 - (2) 구조체 직렬화(Struct Ops Type Traits) (1) | 2024.12.24 |
12-1. 게임플레이 이펙트 컨텍스트 - (1) 커스텀 게임플레이 이펙트 컨텍스트, 직렬화(Serialize) (0) | 2024.12.24 |
11-12. 데미지 실행 계산(Execution Calculation) - (4) 크리티컬 계산 (0) | 2024.12.23 |