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"
이제 컨텍스트를 만드는 부분에서 중단점을 걸고 제대로 설정되었는지 확인하면 된다.
'게임프로그래밍 > 실습2' 카테고리의 다른 글
[실습2] 56. 행동트리 커스텀 서비스 만들기 (0) | 2024.12.28 |
---|---|
[실습2] 55. 블랙보드와 행동트리 (0) | 2024.12.28 |
[실습2] 53. 네트워크 직렬화 (0) | 2024.12.07 |
[실습2] 52. 커스텀 게임플레이 이펙트 컨텍스트 만들기 (0) | 2024.12.06 |
[실습2] 51. UGameplayEffectExecutionCalculation 클래스 (0) | 2024.12.06 |