First: Thanks for the answer!
Second: WTH!?
Third: You’d think they would have mentioned that in the documentation …
The source says this:
bool UGameplayStatics::SaveGameToMemory(USaveGame* SaveGameObject, TArray<uint8>& OutSaveData )
{
if (SaveGameObject)
{
FMemoryWriter MemoryWriter(OutSaveData, true);
FSaveGameHeader SaveHeader(SaveGameObject->GetClass());
SaveHeader.Write(MemoryWriter);
// Then save the object state, replacing object refs and names with strings
FObjectAndNameAsStringProxyArchive Ar(MemoryWriter, false);
SaveGameObject->Serialize(Ar);
return true; // Not sure if there's a failure case here.
}
return false;
}
I imagine what’s going on is that it saves a reference to whatever the object name is at save time, and that object doesn’t exist at load time, and thus the load doesn’t find a reference to restore. If that’s the case, I’m going to have to figure out how to make this work for real with inline object references.