I have this code used to saving/loading asset in editor:
void UJsonDataAsset::Serialize(FArchive& Ar)
{
Super::Serialize(Ar);
if (Ar.IsLoading())
{
int32 ObjectNum;
Ar << ObjectNum;
for (int32 ObjIdx = 0; ObjIdx < ObjectNum; ObjIdx++)
{
FName KeyName;
Ar << KeyName;
FMyJsonContainer Data;// = nullptr;
//Data << Ar;
ObjectMap.Add(KeyName, Data);
}
}
else if (Ar.IsSaving())
{
if (ObjectMap.Num() > 0)
{
int32 ObjectNum = ObjectMap.Num();
Ar << ObjectNum;
for (auto It = ObjectMap.CreateIterator(); It; ++It)
{
FName KeyName = It.Key();
Ar << KeyName;
FMyJsonContainer* Data = &It.Value();
Ar << Data;
}
}
}
}
Also overloaded operator:
FORCEINLINE FArchive& operator<<(FArchive &Ar, FMyJsonContainer* Data)
{
Ar << Data->MyString;
};
Now, When I try to load my asset in editor, the first iteration of for loop, is working, but then at second:
D:\Unreal\RPGEngine\UnrealEngine-4.4\Engine\Source\Runtime\CoreUObject\Private\UObject\LinkerLoad.cpp(3609): Fatal error:
Bad name index 12/10
I get this error.
But keys, while saving seems to serialize properly.