http://blog.csdn.net/szu_it_man/article/details/52776448
前言:
之前写plugin的时候,都是全手动创建添加文件,比如.uplugin是从txt改变扩展名而来,.cpp和.h 文件都是直接在VS里面手动添加,这无论对于初学者还是熟练者来说,都是一件相当麻烦的事。为此,在此写一个较容易上手的教程以供参考。本次写的是一个读取外部xml文件的插件。
______________________________________________________________________
- UE4.12
- Win10 64ibit
- 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声明函数
- #pragmaonce
-
- #include"Engine.h"
- #include"Runtime/XmlParser/Public/XmlParser.h"
- #include"Runtime/XmlParser/Public/XmlFile.h"
- #include"Runtime/XmlParser/Public/XmlNode.h"
- #include"Runtime/XmlParser/Public/FastXml.h"
- #include"ReadXMLBPLibrary.generated.h"
-
- */
- UCLASS()
- classUReadXMLBPLibrary : public UBlueprintFunctionLibrary
- {
- GENERATED_UCLASS_BODY()
-
- UFUNCTION(BlueprintCallable, meta =(DisplayName = "Execute Sample function", Keywords = "ReadXMLsample test testing"), Category = "ReadXMLTesting")
- static float ReadXMLSampleFunction(floatParam);
- public:
-
- UFUNCTION(BlueprintCallable, Category ="MyPlugin")
- static boolReadXML(FString& MaxFPS, FString& SetRes, FString&ScreenPercentage);
- };
(3)ReadXMLBPLibrary.cpp定义函数
- bool UReadXMLBPLibrary::ReadXML(
- FString& MaxFPS,
- FString& SetRes,
- FString& ScreenPercentage
- )
- {
-
- if (FPlatformFileManager::Get().GetPlatformFile().FileExists(*(FPaths::GamePluginsDir() + L"XmlFiles\\Setting.xml")))
- {
- UE_LOG(LogTemp, Warning, TEXT("Find XML File!"));
- FXmlFile*file = new FXmlFile(FPaths::GamePluginsDir() + L"XmlFiles\\Setting.xml");
- FXmlNode*RootNode = file->GetRootNode();
- FXmlNode*MaxFPSNode = RootNode->FindChildNode("MaxFPS");
- MaxFPS = *MaxFPSNode->GetContent();
-
- FXmlNode* SetresNode = RootNode->FindChildNode("Setres");
- SetRes = *SetresNode->GetContent();
-
- FXmlNode* ScreenPercentageNode = RootNode->FindChildNode("ScreenPercentage");
- ScreenPercentage = *ScreenPercentageNode->GetContent();
-
-
-
- return true;
- }
- else
- {
- UE_LOG(LogTemp, Warning, TEXT("Cannot Find XML File"));
- return false;
- }
- }
5. 编译上述程序成功后,重启工程,即可找到你自己的插件函数。然后尝试运行,可以发现和xml的设置数值一样
6. 打包后,将xml拷到对应的文件夹之后,即可使用
至此,插件制作完成。