Resources Subsystem
The resources subsystem can be used to get information about all resource types registered in your project.
Subsystem Methods
Get Subsystem
This method uses a cached pointer to the subsystem, which will be much faster than the regular blueprint node.
static USimpleResourcesSubsystem* GetPtr();
USimpleResourcesSubsystem* Subsystem = USimpleResourcesSubsystem::GetPtr();
USimpleResourcesSubsystem& Subsystem = USimpleResourcesSubsystem::Get();
Get All Resource Definitions
static void GetAllDefinitions(
TArray<USimpleResourceDefinition*>& OutResources
);
TArray<USimpleResourceDefinition*> Definitions;
USimpleResourcesSubsystem::GetAllDefinitions(Definitions);
static TArray<USimpleResourceDefinition*> GetAllDefinitions();
auto Resources = USimpleResourcesSubsystem::GetAllDefinitions();
Get Resource Definitions By Tag
Allows fetching all resources with the specified tag.
Assuming we have some gameplay tag hierarchy like:
Resources
RawResource
Iron
Copper
Gold
ProcessedResource
IronBar
CopperBar
GoldBar
If we wanted all of our RawResource
type resources, we can use Resources.RawResource
as the tag, this would fetch all 3 of them.
If we just used Resources.RawResource.Iron
as the tag, it would only fetch the Iron
resource.
static void GetResourceDefinitionsByTag(
FGameplayTag Tag,
TArray<USimpleResourceDefinition*>& OutResources
);
FGameplayTag Tag = FGameplayTag::RequestGameplayTag(FName(TEXT("Resources.RawResource")));
TArray<USimpleResourceDefinition*> Definitions;
USimpleResourcesSubsystem::GetResourceDefinitionsByTag(Tag, Definitions);
Get Resource Definition By Tag
Gets a single resource definition by its tag.
static USimpleResourceDefinition* GetResourceDefinition(
FGameplayTag Tag
);
FGameplayTag Tag = FGameplayTag::RequestGameplayTag(FName(TEXT("Resources.RawResource.Iron")));
USimpleResourceDefinition* Definition = USimpleResourcesSubsystem::GetResourceDefinition(Tag);
Try To Get Resource Definition By Tag
Gets a single resource definition by its tag.
static bool TryGetResourceDefinition(
FGameplayTag Tag,
USimpleResourceDefinition*& OutDefinition
);
FGameplayTag Tag = FGameplayTag::RequestGameplayTag(FName(TEXT("Resources.RawResource.Iron")));
USimpleResourceDefinition* Definition = nullptr;
if(USimpleResourcesSubsystem::TryGetResourceDefinition(Tag, Definition)) {
// Do something
}
Last modified: 05 August 2025