Skip to main content
 首页 » 资源教程 » UE4教程

【UE4学习】12_(XML)插件制作

2016年10月16日 10:40:0518160

中国AR网(微信公众号:armeiti)前言:

         之前写plugin的时候,都是全手动创建添加文件,比如.uplugin是从txt改变扩展名而来,.cpp和.h 文件都是直接在VS里面手动添加,这无论对于初学者还是熟练者来说,都是一件相当麻烦的事。为此,在此写一个较容易上手的教程以供参考。本次写的是一个读取外部xml文件的插件。

______________________________________________________________________

[cpp] view plain
  1. UE4.12  

  2. Win10 64ibit  

  3. VS2015  


__________________________________________________________________

1.      新建工程

新建C++工程或者蓝图工程,如果新建蓝图工程需要再手动添加C++类然后重启工程,这样才能进行下一步。

2.      新建插件Edit > Plugins > New plugin

【UE4学习】12_(XML)插件制作 UE4教程 第1张

选中好想要的插件类型,为你的插件命名,然后点击Create plugin创建。

【UE4学习】12_(XML)插件制作 UE4教程 第2张

         然后会提示你的重启工程,以让你自己的插件在Plugins显示出来。重启工程的时候可能会提示你编译你插件的dll,点击进行即可继续打开工程。然后可对插件进行更进一步的自定义。

【UE4学习】12_(XML)插件制作 UE4教程 第3张


经过上面的准备之后,可以开始进行主要步骤了。

3.将插件的类型从默认的Develop改为Runtime,这是为了是之后能够生成.lib文件。

【UE4学习】12_(XML)插件制作 UE4教程 第4张

关于这三个参数的描述

【UE4学习】12_(XML)插件制作 UE4教程 第5张

4.由于我们是写一个读外部xml的插件,因而我们将需要用到UE4内部对xml的相关引用支持。

        首先是在我们的插件ReadXML.Build.cs里包含相关的模块”XmlParser”

【UE4学习】12_(XML)插件制作 UE4教程 第6张

         其次在插件的头文件中添加相关的xml头文件

【UE4学习】12_(XML)插件制作 UE4教程 第7张

5. 编写读xml的程序,供蓝图调用。在本文中,我们尝试读取xml中MaxFPS, SetRes, ScreenPercentage三个参数。

(1)Xml设置

【UE4学习】12_(XML)插件制作 UE4教程 第8张

(2)ReadXMLBPLibrary.h声明函数

[cpp] view plain
  1. #pragmaonce  

  2.    

  3. #include"Engine.h"  

  4. #include"Runtime/XmlParser/Public/XmlParser.h"  

  5. #include"Runtime/XmlParser/Public/XmlFile.h"  

  6. #include"Runtime/XmlParser/Public/XmlNode.h"  

  7. #include"Runtime/XmlParser/Public/FastXml.h"  

  8. #include"ReadXMLBPLibrary.generated.h"  

  9.    

  10. */  

  11. UCLASS()  

  12. classUReadXMLBPLibrary : public UBlueprintFunctionLibrary  

  13. {  

  14.          GENERATED_UCLASS_BODY()  

  15.    

  16.          UFUNCTION(BlueprintCallable, meta =(DisplayName = "Execute Sample function", Keywords = "ReadXMLsample test testing"), Category = "ReadXMLTesting")  

  17.          static float ReadXMLSampleFunction(floatParam);  

  18. public:  

  19.    

  20.          UFUNCTION(BlueprintCallable, Category ="MyPlugin")  

  21.                    static boolReadXML(FString& MaxFPS, FString& SetRes, FString&ScreenPercentage);  

  22. };  

(3)ReadXMLBPLibrary.cpp定义函数

[cpp] view plain
  1. bool UReadXMLBPLibrary::ReadXML(  

  2.     FString& MaxFPS,  

  3.     FString& SetRes,  

  4.     FString& ScreenPercentage  

  5.     )  

  6. {  

  7.     //Plugin的所在路径下的XmlFiles文件中的Setting.xml文件  

  8.     if (FPlatformFileManager::Get().GetPlatformFile().FileExists(*(FPaths::GamePluginsDir() + L"XmlFiles\\Setting.xml")))  

  9.     {  

  10.         UE_LOG(LogTemp, Warning, TEXT("Find XML File!"));  

  11.         FXmlFile*file = new FXmlFile(FPaths::GamePluginsDir() + L"XmlFiles\\Setting.xml");  

  12.         FXmlNode*RootNode = file->GetRootNode();  

  13.         FXmlNode*MaxFPSNode = RootNode->FindChildNode("MaxFPS");  

  14.         MaxFPS = *MaxFPSNode->GetContent();  

  15.    

  16.         FXmlNode* SetresNode = RootNode->FindChildNode("Setres");  

  17.         SetRes = *SetresNode->GetContent();  

  18.    

  19.         FXmlNode* ScreenPercentageNode = RootNode->FindChildNode("ScreenPercentage");  

  20.         ScreenPercentage = *ScreenPercentageNode->GetContent();  

  21.    

  22.    

  23.    

  24.         return true;  

  25.     }  

  26.     else  

  27.     {  

  28.         UE_LOG(LogTemp, Warning, TEXT("Cannot Find XML File"));  

  29.         return false;  

  30.     }  

  31. }  

5.  编译上述程序成功后,重启工程,即可找到你自己的插件函数。然后尝试运行,可以发现和xml的设置数值一样

【UE4学习】12_(XML)插件制作 UE4教程 第9张

【UE4学习】12_(XML)插件制作 UE4教程 第10张

6.      打包后,将xml拷到对应的文件夹之后,即可使用

【UE4学习】12_(XML)插件制作 UE4教程 第11张

     至此,插件制作完成。

————————————————————————————

参考:

 XmlParser API

插件 | Unreal Engine

更多AR新闻就在中国AR网(http://www.chinaar.com/)
更多AR教程就在中国AR网(http://www.chinaar.com/)
中国AR网(微信公众号:armeiti)
评论列表暂无评论
发表评论