- 개요
언리얼 엔진에서 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 파일

GameplayTags는 static 프로퍼티이므로 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들을 실제로 추가한다
이후 AbilitySystemGlobals의 InitGlobalData 함수를 호출하여 TargetData를 초기화한다
해당 동작은 한번만 수행해도 되며, 함수를 호출함으로써 GAS 프레임워크의 동작을 유연하게 할 수 있다
2 - 2) DefaultEngine.ini

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


최종적으로 위와 같이 Data Table 없이도 GameplayTag가 추가된 것을 확인할 수 있다
'언리얼 엔진 - 게임 프로젝트 > GAS 프레임워크 RPG 프로젝트' 카테고리의 다른 글
| 스탯창 UI - 최종) 스탯창 UI와 AttributeSet의 연동 (0) | 2025.08.03 |
|---|---|
| 스탯창 UI - 3) AttributeInfo 데이터애셋 클래스와 BlueprintFunctionLibrary 클래스 (0) | 2025.08.01 |
| 스탯창 UI - 1) 스탯창 UI 애셋과 설계 구조 (0) | 2025.08.01 |
| RPG 게임의 능력치 - 최종) Modifier Magnitude Calculations 클래스 (0) | 2025.07.28 |
| RPG 게임의 능력치 - 4) 새로운 능력치 추가와 레벨 시스템 추가 (0) | 2025.07.27 |