본문 바로가기

게임프로그래밍/실습2

[실습2] 54. 커스텀 게임플레이 이펙트 컨텍스트 사용하기

1. 글로벌 클래스 만들기

 

어빌리티 시스템에서 글로벌로 사용할 클래스를 만들어 이곳에서 커스텀 컨텍스트 등 다양한 커스텀 기능들을 사용할 수 있게 하려고 한다.

 

 

 

이제 클래스에 함수 하나를 오버라이드 하자.

UCLASS()
class PRACTICE2_API UAuraAbilitySystemGlobals : public UAbilitySystemGlobals
{
    GENERATED_BODY()
    
public:
    virtual FGameplayEffectContext* AllocGameplayEffectContext() const override;
};
AllocGameplayEffectContext

 

위의 함수는 게임플레이 이펙트 컨텍스트 객체를 생성하고 초기화하는 함수이다.

 

#include "AuraAbilityTypes.h"

FGameplayEffectContext* UAuraAbilitySystemGlobals::AllocGameplayEffectContext() const
{
    return new FAuraGameplayEffectContext();
}

 

이 함수에서 우리가 만든 커스텀 컨텍스트를 반환하게 하면된다.

 

이제 우리가 만들고 있는 프로젝트에서 이 글로벌 클래스를 사용하게 해야한다.


2. 커스텀 글로벌 클래스 사용하게 지정하기

 

IDE를 닫고 프로젝트가 있는 폴더에가 Conig 폴더로 들어간다.

 

 

이곳에서 디폴트게임.ini  파일을 연다.

 

해당 파일에 아래 구문을 추가한다.

 

[/Script/GameplayAbilities.AbilitySystemGlobals]
+AbilitySystemGlobalsClassName="/Script/프로젝트이름.커스텀글로벌클래스이름"

 

여기서 커스텀 글로벌 클래스에 맨앞의 접두어(언리얼엔진을 나타내는 접두어, 여기서는 U)를 빼고 입력해야한다.

 

아래는 예시이다.

[/Script/GameplayAbilities.AbilitySystemGlobals]
+AbilitySystemGlobalsClassName="/Script/Practice2.AuraAbilitySystemGlobals"

 

 

이제 컨텍스트를 만드는 부분에서 중단점을 걸고 제대로 설정되었는지 확인하면 된다.