Subsystem function call failure

The solution to this issue was found by Sebastian Kolbu

First of all UCLASS(Abstract) was added to prevent the C++ implementation from being instantiated.
The subsystem was not being picked up properly for asset scan. This was solved by going “Project Settings” → “Game” → “Asset Manager”, then adding a new entry to the Primary Asset Types To Scan . Just referencing the asset seemed to do the trick for me.

Exactly what subsystem instance we got prior to this, I don’t know. For some reason it would be a valid object to operate on, yet the methods returned nothing (even after locally changing the C++ GetMyString to default implementation return TEXT("C++")).

FString UMyGameInstanceSubsystemCpp::GetMyString_Implementation() const
{
	return TEXT("C++");
}

In the screenshot (Standalone) you can see that I am printing two things: BP and C++. This is done by explicitly getting the BP version of the Subsystem, as well as the C++ version. If set up properly, since the C++ version is abstract, it will return the BP version (which should be the only instantiated one). So now regardless of which type I am trying to get, I am given the BP


image