UE4.26 Save data and specified path by using byte array
#include "ObjectAndNameAsStringProxyArchive.h"
void Save()
{
//创建保存地址
FString SavePath;
if(GIsEditor)
{
SavePath = (FPaths::ProjectDir()+"/SavedGame/StudyProgress.sav");
}
else
{
SavePath = (FPaths::RootDir()+"/SavedGame/StudyProgress.sav");
}
//创建写入的字节数组
TArray<uint8> ObjectData;
// 创建写入器
FMemoryWriter MemoryWriter(ObjectData, true);
// 创建翻译器
FObjectAndNameAsStringProxyArchive Ar(MemoryWriter, false);
// 设置翻译器标识
Ar.ArIsSaveGame = true;
Ar.ArNoDelta = true;
// 将 Object 写入 ObjectData
this->Serialize(Ar);
FFileHelper::SaveArrayToFile(ObjectData, *SavePath);
}
void Load()
{
//创建保存地址
FString SavePath;
if(GIsEditor)
{
SavePath = (FPaths::ProjectDir()+"/SavedGame/Setting.sav");
}
else
{
SavePath = (FPaths::RootDir()+"/SavedGame/Setting.sav");
}
if(FPaths::FileExists(SavePath))
{
IsFindSave = true;
//创建读取的字节数组
TArray<uint8> ObjectData;
FFileHelper::LoadFileToArray(ObjectData,*SavePath);
// 创建阅读器
FMemoryReader MemoryReader(ObjectData, true);
// 创建翻译器
FObjectAndNameAsStringProxyArchive Ar(MemoryReader, false);
// 设置翻译器标识
Ar.ArIsSaveGame = true;
Ar.ArNoDelta = true;
// 将 ObjectData 写入 Object
this->Serialize(Ar);
}
else IsFindSave = false;
}