测试的备注
void AKDXStereController::GetCurrentLevelStereData()
{
初始化配置
const FString GameSaveDir = KDXFileHelper::GetGameSaveDir();
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (!PlatformFile.DirectoryExists(*GameSaveDir))
{
PlatformFile.CreateDirectory(*GameSaveDir);
}
FString filePath = GameSaveDir+"/"+UGameplayStatics::GetCurrentLevelName(this)+".json";
if (PlatformFile.FileExists(*filePath))
{
FString result;
FFileHelper::LoadFileToString(result, *filePath);
TSharedPtr<FJsonObject> JsonObject;
TSharedRef< TJsonReader<> > Reader = TJsonReaderFactory<>::Create(result);
if (FJsonSerializer::Deserialize(Reader, JsonObject)) {
const double currentLevelEyeOffset = JsonObject->GetNumberField(KEY_EYEOFFSET);
const double currentLevelFocusPlaneDis= JsonObject->GetNumberField(KEY_FOCUSPLANEDIS);
}
}
}
void AKDXStereController::SetCurrentLevelStereData()
{
const FString& GameSaveDir = KDXFileHelper::GetGameSaveDir();
const FString filePath = GameSaveDir + "/" + UGameplayStatics::GetCurrentLevelName(this) + ".json";
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (!PlatformFile.DirectoryExists(*GameSaveDir))
{
PlatformFile.CreateDirectory(*GameSaveDir);
}
TSharedPtr<FJsonObject> JsonObject = MakeShareable(new FJsonObject);
JsonObject->SetNumberField(KEY_EYEOFFSET,KDX::EyeOffset);
JsonObject->SetNumberField(KEY_FOCUSPLANEDIS, KDX::FocusPlaneDis);
FString OutputString;
TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&OutputString);
FJsonSerializer::Serialize(JsonObject.ToSharedRef(), Writer);
FFileHelper::SaveStringToFile(*OutputString, *filePath);
}
XML 备注
//const FString filePath = FPaths::GameSavedDir() + "/test.xml";
//FXmlFile* _XmlFile = new FXmlFile(filePath);
//GEngine->AddOnScreenDebugMessage(-1, 1, FColor::Blue,FString::Printf (TEXT("FILE PATH:%s"),*filePath));
//FXmlNode*_rootNode = _XmlFile->GetRootNode();
//if (_rootNode!=nullptr)
//{
// _rootNode->AppendChildNode("map3", "");
// float NUM = -1020;
//
// //_rootNode->FindChildNode(FString("map2"))->FindChildNode("stere")->SetContent(FString::Printf(TEXT("%f"), NUM));
// _rootNode->FindChildNode(FString("map2"))->FindChildNode("stere")->SetContent(FString::SanitizeFloat(NUM));
// if (_XmlFile->Save(filePath))
// {
// GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, TEXT("Succes"));
// }
// else
// {
// GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, TEXT("Fail"));
// }
//
//}
//else
//{
// GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, TEXT("nullptr"));
//}
//_XmlFile = nullptr;
//delete _XmlFile;
//if (_XmlFile==nullptr)
//{
// GEngine->AddOnScreenDebugMessage(-1, 2, FColor::Red, TEXT("nullptr"));
//}
//else
//{
// /*READ*/
// GEngine->AddOnScreenDebugMessage(-1, 2, FColor::Blue, TEXT("exist"));
// FXmlNode* _RootNode = _XmlFile->GetRootNode();
// const TArray<FXmlNode*> _AssetNodes = _RootNode->GetChildrenNodes();
// FXmlNode* _map2Node = _RootNode->FindChildNode(FString("map2"));
// if (_map2Node != nullptr) {
// GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, _map2Node->FindChildNode(FString("stere"))->GetContent());
// }
//
//if (_map2Node==nullptr)
//{
// GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, TEXT("_map2Node nullptr"));
//}
//else
//{
// GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, _map2Node->FindChildNode(FString("stere"))->GetContent());
//}
//for (FXmlNode* node:_AssetNodes)
//{
// GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, node->GetTag());
//}
//for (FXmlNode* node : _AssetNodes)
//{
// //得到_AssetNodes下的所有子节点
// const TArray<FXmlNode*> _ChildNodes = node->GetChildrenNodes();
// FString _AssetContent = node->GetContent();
// //打印_AssetNodes内容
// GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Red, _AssetContent);
// for (FXmlNode* node : _ChildNodes)
// {
// FString _ChildContent = node->GetContent();
// //打印_ChildNodes内容
// GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Blue, _ChildContent);
// }
//}
//}
//_XmlFile = nullptr;
//delete _XmlFile;
FXmlFile* _XmlFile = new FXmlFile(KDXFileHelper::GetStereXMLFilePath());
if (_XmlFile!=nullptr)
{
FXmlNode* _RootNode =_XmlFile->GetRootNode();
const TArray<FXmlNode*> _stereMaps = _RootNode->GetChildrenNodes();
for (FXmlNode* node:_stereMaps)
{
if (node!=nullptr)
{
const FString EyeOffSet = node->FindChildNode("EyeOffset")->GetContent();
const FString FocusPlaneDis = node->FindChildNode("FocusPlaneDis")->GetContent();
const float stere = FCString::Atof(*EyeOffSet);
const float foculsDis = FCString::Atof(*FocusPlaneDis);
StereParamsMaps.Add(node->GetTag(), StereParams(stere, foculsDis));
GEngine->AddOnScreenDebugMessage(-1, 5, FColor::Red, node->GetTag());
}
}
}
_XmlFile = nullptr;
delete _XmlFile;