언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

스탯창 UI - 2) Native한 GameplayTag + AssetManager

monstro 2025. 8. 1. 17:34
728x90
반응형

- 개요

언리얼 엔진에서 Native의 의미C++ 단계에서의 처리를 의미한다

따라서 이전과 같이 Data Table이나 에디터를 사용하지 않고 C++를 통해 GameplayTag를 추가하고

AssetManager를 프로젝트에 포함시켜 GameplayTag를 설정하도록 한다

 

1) Native한 GameplayTag

1 - 1) AuraGameplayTags 구조체의 헤더 파일

 

프로젝트에서 사용하는 모든 GameplayTag를 저장하는 AuraGameplayTags 구조체를 추가하였다

해당 구조체는 싱글톤으로 동작하며 Get 함수를 호출하여 static 인스턴스를 반환하여 사용할 수 있다

InitializeNativeGameplayTags 함수를 호출하여 프로퍼티인 Native한 GamplayTag들 실제로 추가한다

 

1 - 2) AuraGameplayTags 구조체의 cpp 파일

 

 

GameplayTagsstatic 프로퍼티이므로 cpp 파일에서 정의한다

 

 

InitializeNativeGameplayTags 함수에서는 프로퍼티인 Native한 GameplayTag들을 실제로 추가한다

GameplayTagManager로부터 AddNativeGameplayTag 함수를 호출하고 인자를 넘겨준다

  • 에디터에서의 GameplayTag
  • GameplayTag에 대한 설명

 

2) AssetManager 

AuraGameplayTags 구조체 포함된 GameplayTag들

실제 에디터에 추가하려면 InitializeNativeGameplayTags 함수를 호출해야 한다

이때 GameplayTag와 관련된 여러 동작이 많으므로 함수의 호출매우 빠른 시점에서 이루어져야 한다

 

AssetManager언리얼 엔진에서 애셋의 로딩과 관련한 동작을 수행하는 클래스이다

이때 StartInitialLoading 함수 엔진이 시작되는 매우 초창기에 호출하는 함수로서

AuraGameplayTags 구조체의 GameplayTag를 추가하는 동작을 수행하기에 매우 적합하다

 

2 - 1) AuraAssetManager 클래스

 

AuraAssetManager 클래스의 구성은 위와 같다

해당 AssetManager를 가져오기 위한 Get 함수 StartInitialLoading 함수를 추가하였다

 

 

Get 함수에서는 글로벌 엔진으로부터 AssetManager를 가져와 AuraAssetManager로 캐스팅하여 리턴한다

 

 

StartInitialLoading 함수의 로직은 위와 같다

AuraGameplayTags 구조체 InitializeNativeGameplayTags 함수를 호출하여 Tag들을 실제로 추가한다

이후 AbilitySystemGlobalsInitGlobalData 함수를 호출하여 TargetData를 초기화한다

해당 동작은 한번만 수행해도 되며, 함수를 호출함으로써 GAS 프레임워크의 동작을 유연하게 할 수 있다

 

2 - 2) DefaultEngine.ini

 

AssetManager 클래스를 추가하였으므로 사용하기 위해서는 DefaultEngine.ini에 명시해야 한다

 

- 최종 실행 결과

 

 

최종적으로 위와 같이 Data Table 없이도 GameplayTag가 추가된 것을 확인할 수 있다

728x90
반응형