UE4插件开发

定义

UE4引擎、UE4项目都是由各个模块组成的,而插件就是耦合性极低且独立性强的模块。

插件目录结构

  • Binaries:编译后的dll

  • Content:游戏资源Asset

  • Intermediate:编译的中间文件

  • Source:代码存放位置

  • .uplugin文件:插件项目配置文件,JSON格式

  • .Build.cs:每个.build.cs中定义派生自ModuleRules的子类,设置属性控制器从构造函数进行编译的方式。有虚幻编译工具编译,并被构造出来确定整体编译环境。使用C#语法。

.uplugin文件说明

Category:在插件浏览器中所属类别。

Installed:默认启用或禁用状态,在插件浏览器中可以控制加载/卸载插件模块。

Modules:描述模块名,运行类型,加载时机,支持平台等信息。

Type(运行类型):

  1. Runtime

  2. RuntimeNoCommandlet

  3. Developer

  4. Editor

  5. EditorNoCommandlet

  6. Program

LoadingPhase(加载时机)

  1. Default

  2. PreDefault

  3. PostConfigInit

  4. PostConfigInit

WhitelistPlatforms:支持的平台

BlacklistPlatforms:不支持的平台

Build.cs文件说明

派生自ModuleRules 的类名即为模块名

PCHUsage = ModuleRules.PCHUsageMode.XXX

		/// <summary>
		/// What type of PCH to use for this module.
		/// </summary>
		public enum PCHUsageMode
		{
			/// <summary>
			/// Default: Engine modules use shared PCHs, game modules do not
			/// </summary>
			Default,

			/// <summary>
			/// Never use any PCHs.
			/// </summary>
			NoPCHs,

			/// <summary>
			/// Never use shared PCHs.  Always generate a unique PCH for this module if appropriate
			/// </summary>
			NoSharedPCHs,

			/// <summary>
			/// Shared PCHs are OK!
			/// </summary>
			UseSharedPCHs,

			/// <summary>
			/// Shared PCHs may be used if an explicit private PCH is not set through PrivatePCHHeaderFile. In either case, none of the source files manually include a module PCH, and should include a matching header instead.
			/// </summary>
			UseExplicitOrSharedPCHs,
		}

  1. PublicIncludePathModuleNames (List)

带有标头文件的模块名称列表(无需路径),需要由模块的公共标头访问,但不需要再“导入”或链接。

  1. PublicDependencyModuleNames (List)

公共依赖性模块名称列表(不需要路径)(自动包含私有/公共)。这些是公共源文件所需的模块。

  1. PrivateIncludePathModuleNames (List)

带有标头文件的模块名称列表(无需路径),需要由模块的私有代码文件访问,但不需要再“导入”或链接。

  1. PrivateDependencyModuleNames (List)

私有依赖性模块名称列表。这些是私有代码所依赖的模块,但公共include文件中没有任何依赖。

  1. DynamicallyLoadedModuleNames (List)

此模块在运行时可能需要的附加模块。

  1. PublicSystemIncludePaths (List)

系统/库include路径列表,通常用于外部(第三方)模块。在解析标头依赖项时未检查的公共稳定标头文件目录。

  1. PublicIncludePaths (List)

(当前不需要此设置,因为可以从“Public”文件夹中搜索所有文件)公开给其他模块的include文件的所有路径列表。

  1. PrivateIncludePaths (List)

此模块内部include文件的所有路径的列表,未公开给其他模块(至少有一个包含在“私有”路径中,如果要避免相对路径,可以添加更多)

  1. PublicLibraryPaths (List)

系统/库路径列表(.lib文件的目录),通常用于外部(第三方)模块。

  1. PublicAdditionalLibraries (List)

其他库的列表(包括扩展名的.lib文件的名称),通常用于外部(第三方)模块。

创建插件

  1. Edit=>Plugins=>New Plugin

  2. 选择插件模板

  • Blank

空白模板,最简洁的结构,只有模块类和加载卸载函数,一张白纸最好作画了。

  • BlueprintLibrary

蓝图功能库模板,都是静态函数,提供给蓝图直接调用的,如果只是单一的功能集的话,用此模板最快捷

  • EditorToolbarButton

编辑器工具栏按钮模板,此模板在模块加载时会在UE4编辑器工具栏中注册一个按钮,点击此按钮将触发插件模块中的PluginButtonClicked函数

  • EditorStandaloneWindow

编辑器独立窗口模板,顾名思义,它将创建出一个窗口,可以在此窗口中自定义界面,像引擎编辑器的各个界面一样的效果。

3.将C++代码创建至对应插件

插件内的模块实现

每个独立模块都有一个这样的类且继承于 IModuleInterface,重写了插件加载卸载的方法。

.uplugin文件中Modules下的LoadingPhase字段说明了模块加载的时机,当满足这个时机时此模块StartupModule函数将被调用。

此插件的功能入口就是从这里开始。

当程序关闭或主动调用ShutdownModule函数时,模块将被卸载。

插件发布

插件发布是指把你开发的插件分享出去给其他人使用,这时候有几个地方要注意

  1. 插件发布到哪里?(别人从哪里获取你的插件文件?)

如果是公司内部则好办,文件传输或者公司自己的资源平台即可

  1. 如果是发布到UE4官方商城,则需要进入www.unrealengine.com查阅虚幻商城指南,大致流程如下:注册Epic账号并登陆。

  2. 进入发布者门户(Publisher Portal)

  3. 申请成为UE4商城卖家主要有5步,需要添加必要信息。PUBLISHER INFO(商家信息): 必须填写手机号

    1. STORE INFO(商店信息):此处可以直接下一步

    2. PAYOUT INFO(支付信息):使用PayPal或者银联卡

    3. TAX INFO(税收信息):国家 - 中国、I Report Tax Outside Of The United States、NameOnTaxID - 0、Individual/Sole Proprietor、地址信息······。

    4. OPEN SHOP(开张)

  4. 编辑商品信息。

  5. 提交商品表单,官方会在一定时间内审核。

  1. 插件编译版本

用户使用插件时的UE4版本需要与插件编译时的UE4版本一致,不然会警告提示版本不一致而丢失插件。

所以发布插件时要注明插件所支持的UE4版本号。

  1. 插件平台支持

同上,如果插件支持Win32和Win64 或是 Mac 或是Android,发布时也需要注明。

  1. 插件运行类型

.uplugin文件中的Module标签下的Type标签表明了插件运行类型,如果不是Runtime则不是运行在打包后的Game中,Developer或Editor等其他值可查阅官方资料。

  1. 插件更新机制

如有平台支持,可设计更新机制,开发过程复杂,此处跳过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值