UE4 手把手教你做插件(1) 从代码引用插件

11 篇文章 3 订阅
订阅专栏

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,重启就行,现在应该编译不过的,需要修改MyThirdPlugin2.Build.cs的代码,朝后面翻翻能找到~

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 plugin
		FString BaseDir = IPluginManager::Get().FindPlugin("MyThirdPlugin2")->GetBaseDir();

		// Add on the relative location of the third party dll and load it
		FString LibraryPath;
#if PLATFORM_WINDOWS
		LibraryPath = FPaths::Combine(*BaseDir, TEXT("Binaries/ThirdParty/MyThirdPlugin2Library/Win64/ExampleLibrary.dll"));
#elif PLATFORM_MAC
		LibraryPath = FPaths::Combine(*BaseDir, TEXT("Source/ThirdParty/MyThirdPlugin2Library/Mac/Release/libExampleLibrary.dylib"));
#elif PLATFORM_LINUX
		LibraryPath = FPaths::Combine(*BaseDir, TEXT("Binaries/ThirdParty/MyThirdPlugin2Library/Linux/x86_64-unknown-linux-gnu/libExampleLibrary.so"));
#endif // PLATFORM_WINDOWS

		ExampleLibraryHandle = !LibraryPath.IsEmpty() ? FPlatformProcess::GetDllHandle(*LibraryPath) : nullptr;

		if (ExampleLibraryHandle)
		{
			// Call the test function in the third party library that opens a message box
			ExampleLibraryFunction();
		}
		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 _WIN64
	MessageBox(NULL, TEXT("你成功调用了我(* ^ *)~"), TEXT("Third Party Plugin"), MB_OK);
#else
    printf("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,设置世界场景运行游戏

设置游戏模式,并且运行

 

运行结果: 

 

UE5 C++插件开发指南目录
CloudHuCoding
06-02 1587
本专栏可能是相对小众的,但是市面上又没有一本同类型的专栏,所以笔者只能厚着脸皮来起草,由于笔者才疏学浅,难免在写作过程中有所疏漏的地方,故而希望读者如果有什么意见,可以通过邮件反馈给笔者:cloud198923@foxmail.com。而掌握UE5插件开发的技能则可以将我们项目开发的效率提升到更高的水平,做到事半功倍,正所谓“工欲善其事,必先利其器”,打造适合自身行业的插件工具集,使其成为我们的开发事业的利器。因为笔者在实际的项目中也因此而收益,所以这无疑是一件值得做的事情。4.掌握开发插件的整个流程;
UE4 电脑ID和获取插件
07-01
UE4 4.25版本后硬件信息不能用蓝图获取,可以用这个插件读取 插件版本:4.26 需要其他版本的留言联系
【UE 插件UE4 虚幻引擎 插件开发(带源码插件打包、无源码插件打包) 有这一篇文章就够了!!!
hhw_hhw的博客
10-13 5286
安装到引擎目录你可以将插件直接放到C:\Program Files\Epic Games\UE_5.0\Engine\Plugins\Marketplace目录下,也可以放到这个的上级目录。Marketplace目录一般存放的是虚幻商场中下载的插件,我也习惯将自己做的插件放到这个目录,看个人习惯了。安装到工程目录如果需要进行工程拷贝的话,将插件安装到工程目录中是最简单的,别人不需要再去引擎中配置一下你工程中的插件。而是可以直接把插件也拷贝过去。
UE4 手把手教你做插件(4)做一个可以拖入场景的小方块插件
asiwxy的博客
02-23 885
UE4 手把手教你做插件(4)做一个可以拖入场景的小方块插件
UE4 基础篇十四:自定义插件
最新发布
yuchenwuhen的专栏
11-21 583
右键创建TextAsset资源保存文本,拖入Txt文件,直接创建资源可以更改资源的文本,颜色,缩略图,右键菜单所有操作都是通过IAssetTypeActions完成,/***//* FAssetTypeActions_Base 继承自IAssetTypeActions */public:/***/public:private:下面研究几个具体函数//用于确定资源再快捷菜单中被归在哪一类//可以出现再快捷菜单中的多个地方 用|增加。
【虚幻引擎】UE4/UE5插件
qq_43021038的博客
03-15 4384
UE4/UE5 创建自定义的插件
UE4 引入插件的头文件,例如ControlRig
qq_41041725的博客
11-17 3365
前言 作为新手C++学习UE4是痛苦的,UE4的蓝图很强大,基本上蓝图可以解决所有问题。但是我们不用蓝图呢?我就要用C++,这就是我痛苦的原因之一。 ControlRig是UE4插件库中的一个插件,有关它的使用都是通过蓝图实现。我查找遍了网上的文章所有ControlRig的使用都是蓝图,没有有关C++实现的文章。 那么开始用C++引用ControlRig插件。 我找了一天,终于从零零散散的文章中找到了答案,发现答案的那一刻,我感觉自己像柯南一样。 首先是UE4工程的yourProject.Build.cs
UE4插件研发 So Easy
热门推荐
jxyb2012的博客
03-29 1万+
UE4插件研发UE4插件扫盲UE4插件是什么UE4插件的作用UE4引擎、项目、插件的区别引擎自带的插件浏览器插件目录结构插件配置文件说明UE4插件创建方法插件代码的执行过程四种常用模式的插件模板第三方库的引入牛刀小试创建Actor到视图插件插件发布常见的问题插件项目案例 UE4插件扫盲 UE4插件是什么 UE4引擎和UE4项目是由各个模块组成的,其主要编程语言是C++。 插件也是一个模块,说到插...............
UE4 引用
DuGuYiZhao的博客
05-05 411
目录 (1)平台 Target.Platform (2)模块依赖 (3)添加包含路径 (4)添加静态依赖库 (5)添加动态库 (6)异常/警告
UE4 插件开发流程与插件打包问题
Fighter
05-15 1万+
首先是官网的关于插件的内容 http://api.unrealengine.com/CHN/Programming/Plugins/index.html 然后是插件开发的流程视频,跟着做下来,简单的蓝图调用插件也就清楚了 https://pan.baidu.com/s/1EiGO5KqCw-zEI_CW2bOEwA 接着是我的实例工程(4.18.3) 最后是可能会遇到的一些问题: 1、...
UE4/UE5 GooGleTTS文本转语音插件
04-12
这是谷歌云文本到语音和同步云语音到文本语音识别API的虚幻引擎包装。 有了这个插件,你将能够合成31种语言的自然男性和女性语音,并识别119种语言和方言的语音。 无缝TTS缓存将保护您的钱包!如果tts节点满足已经使用的合成参数,它将不会向谷歌发出请求,而是从文件中加载样本。 Android终于得到支持 文本到语音合成蓝图节点 文本到语音节点缓存 语音识别蓝图节点 基于变体的语音识别蓝图节点 基于百分比的字符串比较,以识别语音命令 在运行时根据TTS结果生成异步oculus帧序列
C4D一键无缝导入虚幻4、UE5插件
08-09
C4D一键无缝导入虚幻4、UE5插件。 内含使用说明 C4D需要安装,并且C4D版本在2023.x.x以上。 在虚幻中更新Cinema 4D的内容 使用Cineware for Unreal插件,您可以在虚幻引擎中直接调整Cinema 4D文件的特定属性。在面板中或使用蓝图编辑器来调整文本和其他场景设置,然后单击即可重新导入已应用更改的 Cinema 4D 文件。 请注意: 适用于 Windows 和 macOS 的 Cineware 2023.2.2 离线安装程序需要 Cinema 4D 2023.1 或更新版本、Unreal Engine 5.x。 虚幻引擎 5.03 插件需要 Cinema 4D 25.121 虚幻引擎 4.27 插件需要 Cinema 4D 24.113
UE4 4.27 平滑法线插件
07-07
可以用来平滑模型的法线 不是我做的我只是搬运修改,原作者出处找不到了
UE4/UE5 图片读取加载写入插件
04-20
支持读取下载本地图片 支持读取下载网络图片 C++和蓝图混合使用 支持蓝图可视化 蓝图节点有三个全局静态函数支持蓝图使用
UE4 添加自定义module
01-24
添加了自定义的module到工程中 只提取了工程的source文件夹和 。uproject文件
UE4 手把手教你做插件(3) 万能三招在任意编辑窗口加按钮
asiwxy的博客
02-23 813
UE4 手把手教你做插件(3) 万能三招在任意编辑窗口加按钮
UE4 如何写插件
萌蛋蛋の博客
05-26 1万+
事先说明各个版本的插件写法还是有点区别的我的是基于4.15版本的。 第一种:普通的插件 然后添加一个CPP放在插件的Private下,命名为:插件名+PricatePCH.h文件  这里的插件名为Test,以下以Test为示例讲解: 包含Test的.h文件 #include "Test.h"在Test.cpp里 把#include “Test.h” 替换成
UE4 C++调用第三方插件代码
qq_35559404的博客
01-14 2292
以DBTween插件为例 添加插件模块到UE4 2.查看模块是Public还是Private 3.打开脚本添加模块 4.关闭UE4引擎 在项目的uproject文件右键,选择Generate Visual Studio Project Files,引入的模块。 5.在C++代码中使用模块 有时候引入类库后要UE4编译一下再调用模块方法,有时要等一段时间 ...
ue4 第三方库插件
08-08
UE4 是一款强大的游戏开发引擎,其第三方库插件的功能是扩展引擎的核心功能,为开发者提供更多丰富且高效的工具和功能,以便更好地满足开发需求。UE4的第三方库插件可以通过官方插件市场或其他第三方渠道进行获取和安装。 UE4的第三方库插件可以实现各种功能,比如增加特定平台的功能支持、优化性能、提供高级的图形渲染功能、添加动画系统、提供多人联机功能、增加物理效果等等。通过使用这些插件,开发者可以在自己的项目中轻松地使用这些功能,而无需从头开始编写和调试代码UE4第三方库插件的优势有几个方面: 1. 提高开发效率:第三方库插件已经经过开发者的验证和测试,在适应UE4引擎后可以直接使用,不需要进行二次开发和调试,可以大大缩短项目的开发周期。 2. 功能丰富:第三方库插件可以为UE4引擎增加各种功能和特性,开发者可以根据项目需求选择和使用不同的插件,以满足项目的具体需求。 3. 生态繁荣:UE4的第三方库插件生态系统非常繁荣,有许多开发者和团队贡献了各种各样的插件,可以满足不同开发者的需求。同时,UE4开发者社区也积极交流和分享插件的使用经验和技巧。 需要注意的是,选择和使用第三方库插件时,开发者需要根据项目的实际需求进行评估和选择,确保插件的稳定性和兼容性,并了解插件的文档和支持情况,以便在开发过程中能够及时解决遇到的问题。此外,使用第三方库插件也需要注意未来引擎版本的兼容性,以免由于引擎升级导致插件无法使用或出现其他问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • 图片处理 1篇
  • 工作 11篇
  • UE 11篇
  • OpenGL 5篇
  • FFmpeg 4篇
  • SDL 1篇
  • 音视频 2篇
  • ffplay 2篇
  • win32多线程程序设计 5篇
  • DLL 2篇
  • 行人重识别 1篇
  • c++ 22篇
  • 表格提取 3篇
  • opencv 3篇
  • 操作系统 2篇
  • 搭建blog 1篇
  • C# 1篇

最新评论

  • Windows C++ 弹框显示图片或者播放视频

    普通网友: 大佬的文章写的太精辟了 让我深刻了解了这篇文章的精髓 谢谢大佬分享,希望继续创作优质博文。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • UE4 手把手教你做插件(4)做一个可以拖入场景的小方块插件

    u010866841: 基于空间音频算法的unreal插件开发,算法库由我们提供,供方负责基于unreal的插件封装和算法接入,供开发者使用。 你能做吗? 如果能做的话,+V 报酬丰厚 Tailux

  • UE4 手把手教你做插件(1) 从代码引用插件

    asiwxy: 你是尝试做了吗?

  • UE4 手把手教你做插件(1) 从代码引用插件

    ℡大冒险: 大哥你到底在说些什么

  • malloc分配空间失败,并且不返回null

    breezes coder: 我是在原文件里还是存在问题,且不报错

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • UE 将UTextureRenderTarget2D,FTextureResource,FTextureRHIRef,FRHITexture写成图片
  • UE 如何在引擎初始化之后自动调用函数
  • UE5缺少SDK,而无法在windows平台打包的解决方法
2024年11篇
2023年13篇
2022年22篇
2021年15篇
2020年8篇
2019年1篇
2018年14篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司亳州外贸网站建设推荐天门外贸网站建设公司承德百姓网标王哪家好伊犁网站改版公司迪庆阿里店铺运营报价阜新关键词按天计费报价江门关键词按天计费公司临沧网站设计九江百度网站优化排名多少钱坑梓seo优化多少钱那曲品牌网站设计公司西乡网站优化按天收费哪家好中卫网站优化公司哈密外贸网站建设推荐衢州品牌网站设计哪家好南通seo网站推广济源网站设计哪家好固原网页设计天水优化黔南关键词按天收费德阳模板推广报价龙岩网站设计公司濮阳网站制作多少钱林芝外贸网站设计价格萍乡百度网站优化哪家好白山网站关键词优化海南百搜标王朝阳seo网站优化临汾模板推广价格南平百姓网标王推广公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化