版本: 2022.3
语言: 英语
插件
托管插件

导入和配置插件

如果您有一个 托管插件使用Visual Studio等工具创建的受管理的.NET程序集,可用于Unity。 更多信息
参考术语表
或一个 本地插件在Unity之外创建的特定于平台的本机代码库,可用于Unity。 允许访问像操作系统调用和第三方代码库等在Unity中原本无法使用的功能。 更多信息
参考术语表
,您可以将其导入Unity,然后配置它。 在编辑器中,一个 插件在Unity外部创建的一系列代码,用于在Unity中创建功能。 您在Unity中可以使用两种类型的插件:托管插件(使用Visual Studio等工具创建的受管理的.NET程序集)和本地插件(特定于平台的本机代码库)。 更多信息
参考术语表
作为资产处理,就像脚本一样,您可以在检查器窗口中配置它。

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

导入插件

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

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

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

  • a
  • .aar
  • .bc
  • .c
  • .cc
  • .cpp
  • .dll
  • .def
  • .dylib
  • .h
  • .jar
  • .jslib
  • .jspre
  • .m
  • .mm
  • .prx
  • .rpl
  • .so
  • .sprx
  • .suprx
  • .swift
  • .winmd
  • .xex
  • .xib

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

  • .androidlib
  • .bundle
  • .framework
  • .plugin

插件默认设置

如果插件在“资产”文件夹中的路径匹配特定平台的模式,Unity将自动将该平台特定的默认设置应用到插件。 如果路径不匹配任何模式,Unity将应用编辑器平台的默认设置到该插件。

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

文件夹路径模式 默认设置
Assets/../Editor/(x86x86_64 或 x64) 平台: 仅限编辑器

CPU(可选):基于子文件夹,如果存在。
Assets/../Plugins/(x86_64x86 或 x64) 平台: Windows、Linux和macOS

CPU(可选):基于子文件夹,如果存在。
Assets/Plugins/iOS 平台: iOS
Assets/Plugins/WSA/(SDK80SDK81 或 PhoneSDK81)/(x86ARM) 平台: Universal Windows Platform

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

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

注意: 您可以使用关键字 Metro 代替 WSA

更改插件设置

在Unity中,插件可以是 托管原生。下表显示了针对每种类型的插件的相关设置。

设置 托管 原生
选择插件平台 x x
平台设置 x x
资产标签 x x
资产包 x x
一般 x
定义约束 x
插件加载设置 x

要在 检视器一个Unity窗口,显示有关当前选定的GameObject、资产或项目设置的详细信息,允许您检查和编辑值。 更多信息
术语表 中查看
中查看并更改插件设置,请在 项目 窗口中选择插件文件。

Settings for a managed plug-in (left) and a native plug-in (right).
托管插件(左)和原生插件(右)的设置。

常用插件设置

选择插件平台平台设置 指定Unity在哪些构建中包含插件。

以下表格描述了常用设置。

设置 选项 注释
选择插件平台 编辑器:用于播放模式和任何在编辑时运行的脚本。
独立:Windows、Linux和macOS。
• 在Unity安装中包含的任何平台,例如Android、iOS和WebGL。
要使插件与Unity尚未包含的平台一起工作,请选中 任何平台。如果不支持某些平台,您可以将个别平台排除。

当导入了插件后,Unity会将它加载到内存中。原生插件无法卸载;即使在更改了其设置之后,它也会在Unity会话中保持加载状态。要卸载插件,必须重新启动Unity。
平台设置 对于您选择的每个平台,您可以指定其他条件,例如CPU架构和依赖项。Unity仅显示适用于您的平台和尽可能针对该平台上您特定插件类型的设置。例如,具有.dll扩展名的原生插件文件只能在Windows上运行,因此Unity仅显示Windows设置。
编辑器 • CPU架构
• 操作系统
大多数托管插件与任何CPU和OS兼容。

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

原生库仅与单个OS兼容,但可以与32位、64位兼容,或者与两者都兼容。
通用Windows平台 参见 通用Windows平台:IL2CPP脚本后端上的插件
Android CPU架构 CPU架构必须与库编译的架构相匹配。Unity不会验证您的设置。

另请参阅:AAR插件和Android库
iOS和tvOS • 框架依赖项
• 添加到已嵌入的二进制文件中
• 编译标志
选择 添加到已嵌入的二进制文件中 选项时,Unity会将Xcode项目选项设置为将插件文件复制到最终的应用程序包中。对于
• 动态加载的库。
• 包含动态加载的库的包和框架。
• 需要运行时加载的任何资产和资源。

编译标记字段中,设置Unity在构建过程中需编译的插件源代码文件的编译标记。

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

管理插件设置

管理插件可以是第三方库或用户编译的组件,您希望将其包含在项目中。

一般 - 自动引用

自动引用设置控制项目中的程序集定义如何引用插件文件。启用自动引用时,所有预定义的程序集和程序集定义将自动引用插件文件。

自动引用默认启用。

要限制插件可引用的范围,请禁用自动引用。然后您需要显式声明对那个插件的所有引用。如果您

  • 希望防止脚本(用于创建自己的组件,触发游戏事件,随时间修改组件属性,并以您喜欢的方式响应用户输入的一段代码。更多信息
    参见术语表)误用插件。
  • 您正在迭代插件并希望减少编译时间。如果您显式声明插件,Unity将仅重新编译依赖的程序集,而不是整个项目。
  • 您希望防止用于资源包中的插件与导入到项目中的其他代码冲突。

当您禁用自动引用时,Unity无法引用项目为其创建的预定义程序集中的插件。这些预定义程序集包含您没有使用程序集定义文件分配给其他程序集的您的项目中的所有脚本。要从具有自动引用属性已禁用的插件引用类、函数或其他资源,引用代码必须在用程序集定义文件创建的程序集中。例如,如果您的项目中的一组脚本使用插件,您必须为这些脚本创建程序集定义文件,并在定义文件中添加对插件的显式引用。

可以使用插件的程序集可以超过一个,但所有程序集必须显式声明依赖关系。有关Unity中程序集定义的更多信息,请参阅程序集定义

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

一般 - 验证引用

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

启用验证引用选项来检查

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

如果您不希望检查强名称引用,但仍然想要检查引用是否存在

  1. 插件检查器中启用验证引用
  2. 项目设置 > 玩家 > 其他设置 > 禁用程序集版本验证

定义约束

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

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

您可以使用 Unity 的任何内置定义符号,或者在“项目设置” > “播放器” > “其他设置” > “脚本编译” > “脚本定义符号”中添加符号。您添加的符号是平台特定的,因此您需要为每个相关平台定义它们。有关更多信息,包括内置符号列表,请参阅平台相关编译

提示:为了指定某个符号必须未定义,请在其前加上一个否定符号!(感叹号)。

以下示例中,我们希望 Unity 仅在 Unity 2018.3 或更高版本的 IL2CPP 编写时环境上加载和引用插件。我们定义了两个约束,并且两者都必须满足

  • ENABLE_IL2CPP 未定义
  • UNITY_2018_3_OR_NEWER 已定义
Define Constraints for a specific runtime and Unity version
为特定运行时和 Unity 版本定义约束

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

您可以开始执行与图形初始化、脚本、资产加载、场景场景包含您的游戏的环境和菜单。每个独特的场景文件代表一个独特的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是在逐步设计和构建您的游戏。更多信息
术语表中查看
等等独立于的资源。这与玩家默认加载原生插件的默认方式不同,通常是在脚本执行第一个插件函数时发生(通常是脚本的操作)。

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

  1. 在插件的模块中实现 UnityPluginLoad。请参阅低级原生插件接口
  2. 在编辑器中,选择“插件加载设置” > “启动时加载”。

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

插件
托管插件