ue4读取外部数据_C/C++知识点之ue4 C++ json数据的读写

本文详细讲解了如何在UE4中使用C++进行JSON数据的读写操作,包括写入和读取本地JSON文件的方法,适用于游戏开发中的数据存储与恢复场景。
摘要由CSDN通过智能技术生成

本文主要向大家介绍了 C/C++知识点之ue4 C++ json数据的读写,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

这是改变恢复机制的json文件的例子

//写入

TSharedPtrRootObject = MakeShareable(newFJsonObject);

TArray< TSharedPtr> PackagesThatCanBeRestored;

TSharedPtrEntryObject = MakeShareable(new FJsonObject);

EntryObject->SetStringField(TEXT("PackagePathName"), TEXT("Temp/Untitled_1"));

EntryObject->SetStringField(TEXT("AutoSavePath"), TEXT("Temp/Untitled_1_Auto1.umap"));

TSharedPtrEntryValue = MakeShareable(new FJsonValueObject(EntryObject));

PackagesThatCanBeRestored.Add(EntryValue);

RootObject->SetBoolField(TEXT("RestoreEnabled"), true);

RootObject->SetArrayField(TEXT("Packages"), PackagesThatCanBeRestored);

constFStringFilename = FPaths::GameSavedDir() /TEXT("Autosaves") /TEXT("PackageRestoreData.json");

FArchive* constFileAr = IFileManager::Get().CreateFileWriter(*Filename, FILEWRITE_EvenIfReadOnly);

if (FileAr)

{

TSharedRef> Writer = TJsonWriterFactory< TCHAR, TPrettyJsonPrintPolicy>::Create(FileAr);

FJsonSerializer::Serialize(RootObject.ToSharedRef(), Writer);

FileAr->Close();

}

// 读取本地json文件

const FString Filename = FPaths::GameSavedDir() / TEXT("Autosaves") / TEXT("PackageRestoreData.json");

FArchive* const FileAr = IFileManager::Get().CreateFileReader(*Filename);

bool bJsonLoaded = false;

TSharedPtrRootObject = MakeShareable(new FJsonObject);

{

TSharedRef Reader = TJsonReaderFactory::Create(FileAr);

bJsonLoaded = FJsonSerializer::Deserialize(Reader, RootObject);

FileAr->Close();

}

TMapPackagesThatCanBeRestored;

TArray< TSharedPtr> PackagesThatCanBeRestoredArray = RootObject->GetArrayField(TEXT("Packages"));

int32 TiRen = RootObject->GetIntegerField(TEXT("TiRen"));

for (auto It = PackagesThatCanBeRestoredArray.CreateConstIterator(); It; ++It)

{

TSharedPtrEntryObject = (*It)->AsObject();

const FString PackagePathName = EntryObject->GetStringField(TEXT("PackagePathName"));

const FString AutoSavePath = EntryObject->GetStringField(TEXT("AutoSavePath"));

PackagesThatCanBeRestored.Add(PackagePathName, AutoSavePath);

}

for (auto It = PackagesThatCanBeRestored.CreateConstIterator(); It; ++It)

{

if (TiRen == 1)

{

EditorStartupMap = FPaths::GameContentDir() / TEXT("Autosaves") / It->Value;

}

else

{

EditorStartupMap = AutoSaveUtils::GetAutoSaveDir() / It->Value;

}

}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值