UE4读取本地XML文件

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

需求:

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

涉及知识点:

怎样读取xml文件

思路

使用C++编写,使用UE4自带一个XmlParser函数,可以很方便的实现Xml的简单读写功能。
在这里插入图片描述

操作

1. 添加XmlParser

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

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

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

#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可以不加
	public:
		UFUNCTION(BlueprintCallable, Category = "File", meta = (Keywords = "save xml file"))
		static bool ReadXML(FString FilePathName,FString& IP);				
};

效果如下图
在这里插入图片描述
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文件

<?xml version="1.0" encoding="utf-8"?>
<Config>
	<IP>192.168.1.1</IP>
	<Port>6666</Port>
</Config>	
![在这里插入图片描述](https://img-blog.csdnimg.cn/a5eccd04c0db4316b7e9bf3d494ad349.png)

4. 在蓝图中使用

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

在这里插入图片描述
注意这里的FilePathName,在C++中写的是 FPaths::ProjectDir() 是工程目录,如下图。
在这里插入图片描述

5. 测试

运行游戏,点击键盘 O,成功打印
在这里插入图片描述

祝你成功。

猜你喜欢

转载自blog.csdn.net/leelizc/article/details/130208025