0. 개요
게임플레이 태그(Gameplay Tags)를 효율적으로 생성하고 관리할 수 있는 매니저 클래스를 생성한다.
1. 싱글톤 패턴(Singleton Pattern)
특정 클래스의 인스턴스를 런타임에 한 번만 생성하고 사용하는 방법이다.
게임플레이 태그를 관리하거나 참조하는 용도의 매니저 클래스로 생성하고 외부에서 호출하여 사용한다.
2. 게임플레이 태그 매니저
게임플레이 태그를 생성하여 에디터에서 사용할 수 있도록 Native Tags를 생성할 수 있다.
(1) 매니저 클래스 생성하기 - FAuraGameplayTags
어떤 것도 상속받지 않는 클래스를 생성한다.
#include "CoreMinimal.h"
#include "GameplayTags.h"
struct FAuraGameplayTags
{
/* 싱글톤 매니저
* 에디터에서 사용 가능한 기본 태그
*/
public:
static const FAuraGameplayTags& Get() { return GameplayTags; }
static void InitailizeNativeGameplayTags();
protected:
private:
static FAuraGameplayTags GameplayTags;
};
#include "AuraGameplayTags.h"
#include "GameplayTagsManager.h"
FAuraGameplayTags FAuraGameplayTags::GameplayTags;
void FAuraGameplayTags::InitailizeNativeGameplayTags()
{
UGameplayTagsManager::Get().AddNativeGameplayTag(FName("Attributes.Secondary.Armor"), FString("받는 데미지를 감소시키고 방어 확률을 증가시킴."));
}
- Native 게임플레이 태그
게임플레이 태그는 기본적으로 플러그인의 형태처럼 엔진 내에서 데이터 테이블 등으로 추가하는 방법이 있다.
Native 게임플레이 태그는 C++ 코드에서 내장되어 엔진과 통합되어 사용할 수 있기 때문에, 외부 데이터 테이블 등을 불러오는 등의 작업이 필요하지 않아 성능적으로 이득을 볼 수 있다.
단, Native 태그를 변경하기 위해서는 코드를 변경하고 컴파일을 해야하기 때문에 유연성이 떨어진다.
3. 에셋 메니저
이제 게임의 에셋을 관리하고, 게임플레이 태그 매니저를 초기화 하는 등의 작업을 실행할 싱글톤 클래스를 생성한다.
(1) AuraAssetManager
#include "CoreMinimal.h"
#include "Engine/AssetManager.h"
#include "AuraAssetManager.generated.h"
UCLASS()
class AURA_API UAuraAssetManager : public UAssetManager
{
GENERATED_BODY()
public:
static UAuraAssetManager& Get();
protected:
virtual void StartInitialLoading() override;
};
#include "AuraAssetManager.h"
#include "AuraGameplayTags.h"
UAuraAssetManager& UAuraAssetManager::Get()
{
check(GEngine);
UAuraAssetManager* AuraAssetManager = Cast<UAuraAssetManager>(GEngine->AssetManager);
return *AuraAssetManager;
}
void UAuraAssetManager::StartInitialLoading()
{
Super::StartInitialLoading();
FAuraGameplayTags::InitailizeNativeGameplayTags();
}
StartInitialLoading 함수는 언리얼 엔진의 AssetManager의 멤버 함수이다.
게임이 시작되면 리소스를 불러올 때 해당 함수가 호출된다.
이 함수를 오버라이딩하여 사용한다.
(2) 엔진 설정
[/Script/Engine.Engine]
+ActiveGameNameRedirects=(OldGameName="TP_BlankBP",NewGameName="/Script/Aura")
+ActiveGameNameRedirects=(OldGameName="/Script/TP_BlankBP",NewGameName="/Script/Aura")
AssetManagerClassName=/Script/Aura.AuraAssetManager
프로젝트 경로 - Config - DefaultEngine.ini 파일에 상위 문단을 찾아 마지막 줄을 추가한다.
(3) 에디터에 설정된 게임플레이 태그 제거하기
에디터 상에서 데이터 테이블을 사용하여 생성한 Primary 속성 세트를 제거하고 Native로 추가할 것이다.
편집 - 프로젝트 설정 - Gameplay Tags 내의 추가했던 데이터 테이블을 제거하면 아래의 태그 목록에서 Primary 속성이 사라지게 된다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
7-8. 블루프린트 함수 라이브러리 - (2) 속성 메뉴 위젯 컨트롤러 (0) | 2024.09.27 |
---|---|
7-6. Native 게임플레이 태그, Native 태그 블루프린트로 전달하기 (0) | 2024.09.19 |
7-4. 속성 메뉴 UI - (4) 속성 값 전달 구상 (0) | 2024.09.06 |
7-3. 속성 메뉴 UI - (3) 속성 메뉴 열기 / 닫기 (0) | 2024.09.06 |
7-2. 속성 메뉴 UI - (2) 속성 메뉴 수정, 버튼 만들기 (0) | 2024.09.06 |