Version: 6000.3
语言: 中文
集成第三方代码库(插件)
托管插件

导入和配置插件

如果你有一个托管插件 使用 Visual Studio 等工具创建的托管 .NET 程序集,用于 Unity 中。更多信息
请参阅术语表
本机插件Unity 外部创建以在 Unity 中使用的特定于平台的本机代码库。允许您访问作系统调用和第三方代码库等功能,否则 Unity 无法使用这些功能。更多信息
请参阅术语表
,您可以将其导入 Unity,然后进行配置。在编辑器中,一个插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表
被视为资产,类似于脚本,您可以在 Inspector 窗口中对其进行配置。

您可以使用插件配置来指定插件的运行位置;哪些平台和哪些平台配置,以及在哪些条件下

导入插件

将插件导入项目的最简单方法是单击插件并将其拖动到“资源”文件夹或其子文件夹之一。Unity 将特定文件和文件夹类型识别为插件。它还可以应用与插件的预期平台匹配的默认设置。

注意:导入插件时,Unity 会将其加载到内存中。无法卸载本机插件;即使在更改其设置后,它仍会在 Unity 会话中加载。要卸载插件,您必须重新启动 Unity。

支持的插件文件和文件夹类型

Unity 将具有以下扩展名的文件视为插件:

  • 。一个
  • .aar 域名
  • 。公元前
  • .c 域名
  • .cc 域名
  • .cpp
  • .dll
  • .def 域名
  • .dylib 域名
  • .h
  • 。罐
  • .jslib 域名
  • .jspre 域名
  • .米
  • 。毫米
  • .prx 域名
  • .rpl 域名
  • 。所以
  • .sprx 域名
  • .suprx 域名
  • 。迅速
  • .winmd 域名
  • .xex 域名
  • .xib 域名

Unity 还将某些文件夹视为捆绑插件。Unity 不会在这些文件夹中查找其他插件文件,因此文件夹中的所有内容都被视为单个插件。Unity 将具有以下扩展名的文件夹视为捆绑插件:

  • .androidlib 域名
  • 。捆
  • 。框架
  • .plugin 域名

插件默认设置

如果插件在 Assets 文件夹中的路径与特定于平台的模式匹配,Unity 会自动将特定于平台的默认设置应用于插件。如果路径与任何模式不匹配,Unity 会将编辑器平台默认设置应用于插件。

下表显示了 Unity 识别的路径模式。括号中显示的路径部分是可选的。当路径包含双点时,它可以包含更多文件夹。

文件夹路径模式 默认设置
资产/。。/Editor/(x86x86_64 或 x64) 平台:仅

编辑器 CPU(可选):基于子文件夹(如果存在)。
资产/。。/插件/(x86_64x86 或 x64) 平台:Windows、Linux 和 macOS

CPU(可选):基于子文件夹(如果存在)。
资产/插件/iOS 平台:iOS
资产/插件/WSA/(SDK80SDK81PhoneSDK81)/(x86ARM) 平台:通用 Windows 平台

SDK(可选):基于子文件夹(如果存在)。出于兼容性原因,SDK81 是 Win81,PhoneSDK81 是 WindowsPhone81。

CPU(可选):基于子文件夹(如果存在

)注意:您可以使用关键字Metro而不是WSA

更改插件设置

在 Unity 中,插件要么是托管的,要么是本机的。下表显示了哪些设置与每种类型的插件相关:

设置 管理 本地
选择插件平台 x x
平台设置 x x
资产标签 x x
资产包 x x
常规 x
定义约束 x
插件加载设置 x

要查看和更改插件设置,请在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
,在“项目”窗口中选择插件文件。

托管插件(左)和本机插件(右)的设置。
托管插件(左)和本机插件(右)的设置。

常用插件设置

为插件选择平台,平台设置指定 Unity 在哪些版本中包含插件。

选择插件平台

平台 描述
任何平台 允许插件与任何平台配合使用,包括尚未安装的平台。如果选中,则此选项将以下单个平台选择从包含逻辑更改为排除逻辑。
编辑 器 适用于播放模式和任何脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
在编辑模式下运行。
独立 Windows、Linux 和 macOS。
任何已安装的平台。 Unity 安装中包含的任何平台,例如 Android、iOS 和 Web。

平台设置

对于每个选定的平台,您可以指定其他特定于平台的设置,例如 CPU 架构和依赖项。Unity 仅显示适用于您的平台的设置,并在可能的情况下显示适用于该平台上的特定插件类型的设置。例如,扩展名为 .dll 的本机插件文件只能在 Windows 上运行,因此 Unity 仅显示 Windows 设置。

平台 选项 描述
编辑 器
  • CPU架构
  • 操作系统
大多数托管插件与任何 CPU 和作系统兼容。

大多数本机插件仅与单个作系统兼容,并且根据它们的编译方式,可能仅与单个 CPU 体系结构兼容。
Windows、Linux 和 macOS
  • CPU架构
  • 操作系统
托管库通常与任何作系统和 CPU 体系结构兼容,除非它们访问特定的系统 API。

本机库仅与单个作系统兼容,但可以与 32 位、64 位或两者 CPU 架构兼容。
通用 Windows 平台
  • SDK
  • CPU架构
  • 脚本后端
有关详细信息,请参阅将 UWP 插件与 IL2CPP 配合使用
人造人 CPU架构 CPU 架构必须与编译库的架构相匹配。Unity 不会验证您的设置。

另请参阅:AAR 插件和 Android 库
iOS 和 tvOS
  • 框架依赖项
  • CPU架构
  • 添加到嵌入式二进制文件
  • 编译标志

指定插件兼容的 CPU 架构。Unity 提供用于测试目的的 ARM64 和 X64 模拟器架构。

当您选择 Add to Embedded Binaries 选项时,Unity 会设置 Xcode 项目选项以将插件文件复制到最终应用程序包中。执行此作:
• 动态加载的库。
• 包含动态加载库的捆绑包和框架。
• 需要在运行时加载的任何资产和资源。

Compile Flags 字段中,为 Unity 必须在构建过程中编译的插件源代码文件设置编译标志。

提示:有关其他常见设置的信息,请参阅资源包在编辑器中搜索

托管插件设置

托管插件可以是要包含在项目中的第三方库或用户编译的程序集。

常规 - 自动参考

“自动引用”设置控制项目中的装配定义如何引用插件文件。启用“自动参考”(Auto Reference) 时,所有预定义的装配和装配定义都会自动引用插件文件。

默认情况下,自动引用处于启用状态。

若要限制可以引用插件的范围,请停用“自动引用”。然后,您需要显式声明对该插件的所有引用。如果出现以下情况,您可能需要执行此作:

  • 您希望防止脚本错误地使用插件。
  • 您正在迭代插件,并希望减少编译时间。如果显式声明插件,Unity 只会重新编译依赖程序集,而不是整个项目。
  • 您希望防止 Asset Store 包中使用的插件与导入包的项目中的其他代码发生冲突。

禁用自动引用后,Unity 无法从它为项目创建的预定义程序集中引用插件。这些预定义的装配包含项目中尚未使用装配定义文件分配给其他装配的所有脚本。若要从禁用了“自动引用”属性的插件引用类、函数或其他资源,引用代码必须位于使用程序集定义文件创建的程序集中。例如,如果项目中的一组脚本使用插件,则必须为这些脚本创建程序集定义文件,并在定义文件中添加对插件的显式引用。

多个程序集可以使用该插件,但所有程序集都必须显式声明依赖项。若要了解有关 Unity 中的程序集定义的详细信息,请参阅程序集定义

注意:“自动引用”选项对文件是否包含在构建中没有影响。要控制插件的构建设置,请使用平台设置

常规 - 验证参考

Unity 可以检查插件的引用在项目中是否可用。如果不执行此验证,则当应用程序尝试使用缺少的引用时,用户可能会遇到运行时错误。

启用“验证引用”选项以检查:

  • 插件的引用是否存在。例如,如果您的插件引用了插件Newtonsoft.Json.dll,而 Unity 找不到Newtonsoft.Json.dll,则 Unity 会显示错误。
  • 强命名引用是否能够加载。这很重要,因为强命名引用需要与版本匹配。例如,如果编译一个引用“b.dll”版本 2.0.0 的插件,则该版本必须位于项目中。

如果您不想检查强命名引用,但仍想检查引用是否存在:

  1. 插件检查器中,启用 验证引用(Validate References)。
  2. 项目设置(Project Settings) > 播放器(Player) > 其他设置(Other Settings) 中,>禁用 程序集版本验证(Assembly Version Validation) 。

定义约束

您可以指定 Unity 将插件加载到内存并引用它的条件。这些条件是必须满足的符号,这意味着定义或未定义。

约束的工作方式类似于 C# 中的 #if 预处理器指令,但在程序集级别而不是脚本级别。您可以在装配定义属性中了解有关约束的更多信息。

您可以使用任何 Unity 内置的定义符号,或在 Player > Player > 其他设置 > Script Compilation > Scripting Define Symbols 中添加符号。您添加的符号是特定于平台的,因此您需要为每个相关平台定义它们。有关详细信息,请参阅平台相关编译,包括内置符号的列表。

提示: 要指定符号必须是未定义的,请在其前加上否定 !(感叹号)符号。

在以下示例中,我们希望 Unity 仅在 Unity 2018.3 或更高版本的非 IL2CPP 脚本运行时上加载和引用插件。我们定义了两个约束,并且必须同时满足:

  • ENABLE_IL2CPP未定义
  • UNITY_2018_3_OR_NEWER被定义
定义特定运行时和 Unity 版本的约束
定义特定运行时和 Unity 版本的约束

插件加载设置 - 启动时加载

您可以开始执行独立于图形初始化、脚本、资产加载、场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
,依此类推。这与玩家加载本机插件的默认方式不同,默认方式是等到第一次调用插件的函数之一,通常由脚本执行。

要在应用程序执行任何脚本之前加载插件:

  1. 实现UnityPluginLoad在插件中。请参阅低级原生插件接口
  2. 在编辑器中,选择 插件加载设置(Plugin load settings) > 启动时加载(Load on startup) 。

提示: 有关调用插件函数的 C# 脚本示例,请参阅手册:本机插件

其他资源

集成第三方代码库(插件)
托管插件