언리얼/게임 프로젝트

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (42) 사용자 정의 Asset Manager

monstro 2025. 2. 16. 22:10
728x90
반응형

이번 포스트에서는 사용자 정의 Asset Maanger를 수행하여

이전 GameplayTags 클래스의 InitializeNativeGameplayTags 메소드를 수행하겠습니다.

 

1) AuraAssetManager

#pragma once

#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 "AbilitySystemGlobals.h"
#include "AuraGameplayTags.h"

UAuraAssetManager& UAuraAssetManager::Get()
{
	check(GEngine);

	UAuraAssetManager* AuraAssetManager = Cast<UAuraAssetManager>(GEngine->AssetManager);
	return *AuraAssetManager;
}

void UAuraAssetManager::StartInitialLoading()
{
	Super::StartInitialLoading();
	FAuraGameplayTags::InitializeNativeGameplayTags();
}

 

AssetManager 역시 싱글톤으로 동작하여 유일성이 보장되어야 합니다.

따라서 Get 함수를 통해 자기자신을 리턴하도록 설정하였습니다.

 

또한 AssetManager의 함수 StartInitialLoading의 경우, 언리얼 엔진의 함수 호출 순서에서

먼저 호출되는 함수에 속하므로 게임의 틀이 잡히기 전의 작업을 주로 진행합니다.

따라서 GameplayTagInitializeNativeGameplayTags 함수를 호출하여 Tag들설정하겠습니다.

 

위와 같이 작업한 후 추가적인 설정을 진행해야 합니다.

AssetManager엔진에 속하는 클래스이므로 DefaultEngine.ini에서

어떤 AssetManager를 사용할지 지정해야 합니다.

 

2) AuraAbilitySystemComponent

이제 AssetManager에서의 메서드 호출로 Tag가 잘 설정되었는지 확인해보겠습니다.

 

위와 같이 ASC에서 AbilityActor의 정보가 갱신될 때 호출하는 AbilityActorInfo 함수에서

태그를 10초동안 뷰포트에 띄워보도록 하겠습니다.

 

실행결과는 다음과 같습니다.

 

728x90
반응형