UE4读取本地XML文件

关键词:UE4 UE5 Unreal Engine XML 文件 txt

需求:

游戏开发中需要读取了写入配置文件,需要保存场景信息,道具位置旋转信息,那么将其保存为XML是一个不错的办法。

涉及知识点:

怎样读取xml文件

思路

使用C++编写,使用UE4自带一个XmlParser函数,可以很方便的实现Xml的简单读写功能。
UE4读取本地XML文件_第1张图片

操作

1. 添加XmlParser

找到你工程下的XXXXXBuild.cs文件,双击打开。
这步很关键,很多博主不讲这个,因为太简单了,不值得提。所以初学者会被在这步卡住。
UE4读取本地XML文件_第2张图片
双击打开XXXXXBuild.cs文件后,在后面追加一个“XmlParser” ,如下图。如果不加这一步,后面的代码会报错,会找不到这个函数库。
UE4读取本地XML文件_第3张图片

2. 创建一个能读取 xml 的蓝图功能块

在UE4里,新建一个蓝图函数库,我没有将它放在gamemode或者gamestate中,因为我希望它更灵活,更便于我以后的使用。
UE4读取本地XML文件_第4张图片起名叫 FileRW,意思是文件读取和写入。题外话:为啥没有叫XMLRW,将来我还想把txt文本文件的读取写入也写在这里面。
UE4读取本地XML文件_第5张图片
在 FileRW.h 头文件中,把这两行粘贴进去,注意位置一定要在"FileRW.generated.h"之前。
UE4读取本地XML文件_第6张图片
头文件完整代码:

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "Runtime/XmlParser/Public/XmlParser.h"
#include "FileRW.generated.h"


/**
 * 
 */
UCLASS()
class AUCDISPLAY_API UFileRW : public UBlueprintFunctionLibrary
{
	public:

		UFUNCTION(BlueprintCallable, Category = "File", meta = (Keywords = "save xml file"))
		static bool ReadXML(FString FilePathName,FString& IP);				
};

效果如下图
UE4读取本地XML文件_第7张图片
FileRW.cpp文件完整代码

#include "FileRW.h"

bool UFileRW::ReadXML(FString FilePathName,FString& IP)
{
	
	if (FPlatformFileManager::Get().GetPlatformFile().FileExists(*(FPaths::ProjectDir() + FilePathName)))
	{
		UE_LOG(LogTemp, Warning, TEXT("Find XML File!"));
		FXmlFile* file = new FXmlFile(FPaths::ProjectDir() + TEXT("XML/Setting.xml"));
		FXmlNode* RootNode = file->GetRootNode();
		FXmlNode* m_IP = RootNode->FindChildNode("IP");
		IP = *m_IP->GetContent();
		return true;
	}
	else
	{
		UE_LOG(LogTemp, Warning, TEXT("Cannot Find XML File"));
		return false;
	}
}

写好后,编译。

3. 这是我的XML文件


<Config>
	<IP>192.168.1.1IP>
	<Port>6666Port>
Config>	
![在这里插入图片描述](https://img-blog.csdnimg.cn/a5eccd04c0db4316b7e9bf3d494ad349.png)

4. 在蓝图中使用

现在打开UE4蓝图编辑器,给我的BP_PlayerController蓝图中添加ReadXML功能块,并使用键盘O,将获得的XML的IP打印出来。

UE4读取本地XML文件_第8张图片
注意这里的FilePathName,在C++中写的是 FPaths::ProjectDir() 是工程目录,如下图。
UE4读取本地XML文件_第9张图片

5. 测试

运行游戏,点击键盘 O,成功打印
UE4读取本地XML文件_第10张图片

祝你成功。

你可能感兴趣的:(ue4,xml,c++)