当前位置: 首页 > news >正文

河北省城乡住房建设厅网站独立网站

河北省城乡住房建设厅网站,独立网站,九天智能建站软件,做个小程序0,前言 我看的是 技术宅阿棍儿 的视频,B站有。 系列视频:从代码引用插件_哔哩哔哩_bilibili 看不懂,只能边查资料边看,讲的顺序有点乱 1,根据视频提示创建第三方插件 注意:如果只有空白插件的情…

0,前言

我看的是 技术宅阿棍儿 的视频,B站有。

系列视频:从代码引用插件_哔哩哔哩_bilibili

看不懂,只能边查资料边看,讲的顺序有点乱

1,根据视频提示创建第三方插件 

注意:如果只有空白插件的情况,需要你创建一个C++类,就能够看到很多插件类型了

具体看着:Creating New Plugins - non-content only - missing templates? - #3 by JollyTarkaVFX - C++ - Epic Developer Community Forums (将这个插件放在了ue引擎或者选择放在项目下面,建议后者)

2,创建游戏模式

可以参考以下文章,很简单,就看前面的两步就OK: (以下过程会让你的UE不断重启)

​​​​​​​UE4开发三:创建游戏模式、角色、控制器_mergerly的博客-CSDN博客_ue4玩家控制器游戏模式作用

然后你会拥有如下的文件结构:

新建工程下的目录:

介绍一下文件结构和调用关系是:

​​​​​​​第三方插件调用第三方库 

3,创建第三方插件的类:

(1)按照图上的步骤来:​​​​​​​

​​​​​​​

​​​​​​​

最后,打开vs,重启就行

4,第三方插件的代码修改 

(1)修改ThirdLibInvoker类的代码

ThirdLibInvoker.h

class MYTHIRDPLUGIN2_API UThirdLibInvoker : public UObject
{GENERATED_BODY()void* ExampleLibraryHandle;public:~UThirdLibInvoker();void InvokeLib();
};

ThirdLibInvoker.cpp

(这里其实是将MyThirdPlugin2.cpp的代码拷贝过来,憋看到就害怕了~)

// Fill out your copyright notice in the Description page of Project Settings.#include "ThirdLibInvoker.h"
#include "Core.h"
#include "Modules/ModuleManager.h"
#include "Interfaces/IPluginManager.h"
#include "MyThirdPlugin2Library/ExampleLibrary.h"UThirdLibInvoker::~UThirdLibInvoker()
{FPlatformProcess::FreeDllHandle(ExampleLibraryHandle);ExampleLibraryHandle = nullptr;
}void UThirdLibInvoker::InvokeLib()
{if (ExampleLibraryHandle == nullptr){// Get the base directory of this pluginFString BaseDir = IPluginManager::Get().FindPlugin("MyThirdPlugin2")->GetBaseDir();// Add on the relative location of the third party dll and load itFString LibraryPath;
#if PLATFORM_WINDOWSLibraryPath = FPaths::Combine(*BaseDir, TEXT("Binaries/ThirdParty/MyThirdPlugin2Library/Win64/ExampleLibrary.dll"));
#elif PLATFORM_MACLibraryPath = FPaths::Combine(*BaseDir, TEXT("Source/ThirdParty/MyThirdPlugin2Library/Mac/Release/libExampleLibrary.dylib"));
#elif PLATFORM_LINUXLibraryPath = FPaths::Combine(*BaseDir, TEXT("Binaries/ThirdParty/MyThirdPlugin2Library/Linux/x86_64-unknown-linux-gnu/libExampleLibrary.so"));
#endif // PLATFORM_WINDOWSExampleLibraryHandle = !LibraryPath.IsEmpty() ? FPlatformProcess::GetDllHandle(*LibraryPath) : nullptr;if (ExampleLibraryHandle){// Call the test function in the third party library that opens a message boxExampleLibraryFunction();}else{//FMessageDialog::Open(EAppMsgType::Ok, LOCTEXT("ThirdPartyLibraryError", "Failed to load example third party library"));}}}

  (2)修改MyThirdPlugin2的代码

MyThirdPlugin2.h

删掉:void * exemplexxxx(具体啥名字忘记了)

加上:class UThirdLibInvoker * Lib;

MyThirdPlugin2.cpp

void FMyThirdPlugin2Module::StartupModule()
{// 将这些代码复制到ThirdLibInvoker.cpp里面去Lib = NewObject<UThirdLibInvoker>();Lib->InvokeLib();}
void FMyThirdPlugin2Module::ShutdownModule()
{//删掉这里面的代码
}

(3)MyThirdPlugin2.Build.cs修改

添加CoreUObject

5,第三方库的代码修改 及其 编译方法

(1)ExampleLibrary.cpp代码修改

改一个你喜欢的弹窗吧~

EXAMPLELIBRARY_EXPORT void ExampleLibraryFunction()
{
#if defined _WIN32 || defined _WIN64MessageBox(NULL, TEXT("你成功调用了我(* ^ *)~"), TEXT("Third Party Plugin"), MB_OK);
#elseprintf("Loaded ExampleLibrary from Third Party Plugin sample");
#endif
}

(2) 编译方式

1,VS新建一个工程叫MyThirdLibPluginLibrary,我放在了这里:UE4_PluginAndSlate\Plugins\MyThirdPlugin2\Source\ThirdParty\MyThirdPlugin2Library\ExampleLibrary\MyThirdLibPluginLibrary

2,工程中添加ExampleLibrary.cpp, ExampleLibrary.h两个文件

3,修改MyThirdLibPluginLibrary工程属性(点击工程,右键选择属性):

    找到这两个文件的路径,修改输出目录为这两个文件的路径,如下图

然后点击右上角配置管理器,改为release:

4,将生成的dll拷贝到编辑器寻找的路径下面

我们可以看到ThirdLibInvoker.cpp代码里面是通过这句话来加载第三方库的,编辑器只会朝这个路径下寻找ExampleLibrary.dll,因此需要将新生成的ExampleLibrary.dll拷贝过去 

LibraryPath = FPaths::Combine(*BaseDir, TEXT("Binaries/ThirdParty/MyThirdPlugin2Library/Win64/ExampleLibrary.dll"));

 4,游戏模块的代码修改 

(1).cs代码统一修改

 UE4_PluginAndSlate.Build.cs

UE4_PluginAndSlate.Target.cs

UE4_PluginAndSlateEditor.Target.cs

 (2)MyGameModeBase

MyGameModeBase.h

添加beginplay函数

class UE4_PLUGINANDSLATE_API AMyGameModeBase : public AGameModeBase
{GENERATED_BODY()
protected:virtual void BeginPlay() override;
};

MyGameModeBase.cpp

void AMyGameModeBase::BeginPlay()
{Super::BeginPlay();UThirdLibInvoker* Lib = NewObject<UThirdLibInvoker>();Lib->InvokeLib();
}

5,设置世界场景运行游戏

设置游戏模式,并且运行

 

运行结果: 

 

http://www.mmbaike.com/news/79198.html

相关文章:

  • wordpress制作培训网站重庆seo排名
  • 哪些是用vue做的网站新公司做网站多少钱
  • 企业网站建设需求文档申请网站怎样申请
  • 南漳网站设计seo策略有哪些
  • 做速卖通要关注的几个网站网络营销师是干什么的
  • 不花钱做推广的网站浙江网站建设营销
  • 网络营销导向企业网站建设seo怎么优化网站排名
  • 桂城网站建设关键词优化简易
  • 做网站字体大小微信推广
  • 网站开发的专业能力新产品推广方案策划
  • 网页链接提取码怎么用seo与sem的区别
  • 泉州做网站开发公司seo高效优化
  • 洛阳建设企业网站有哪些免费推广网站
  • 制作一个景点介绍的网站html百度搜索排名推广
  • 关于做批发网站视频号广告推广
  • 摄影工作室网站源码营销是做什么
  • 佛山网站优化软件360网站收录
  • 烟台网站建设科技google play官网下载
  • 广东做网站的公司有哪些网站怎么优化关键词快速提升排名
  • python购物网站开发流程sem优化公司
  • 香港特别行政区的陆地面积约1106海南seo
  • 宽屏网站模板htmlseo代理计费系统
  • wordpress 广告格子信息流优化师需要具备哪些能力
  • 做网站被捉2024年重大新闻摘抄
  • 做网站的图片Pc端和手机端的区别品牌企业seo咨询
  • 新乡网站优化爱站网长尾词挖掘工具
  • 政府的网站应该怎么做网推拉新app推广接单平台
  • 旅游网站策划方案客服外包平台
  • wordpress 首页变量北京百度seo排名
  • 承包网站开发百度一下一下你就知道