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

http://blog.csdn.net/szu_it_man/article/details/52776448

前言:

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

______________________________________________________________________

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. UE4.12  
  2. Win10 64ibit  
  3. VS2015  

__________________________________________________________________

1.      新建工程

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

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

         

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


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


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

 

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

关于这三个参数的描述


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

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


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


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

(1)Xml设置


(2)ReadXMLBPLibrary.h声明函数

 

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  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  copy
  在CODE上查看代码片 派生到我的代码片
  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的设置数值一样



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



     至此,插件制作完成。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值