如果您有托管插件使用 Visual Studio 等工具创建的托管 .NET 程序集,用于在 Unity 中使用。 更多信息
参见术语表或原生插件在 Unity 之外创建的特定于平台的原生代码库,用于在 Unity 中使用。允许您访问诸如操作系统调用和第三方代码库等功能,否则这些功能在 Unity 中将不可用。 更多信息
参见术语表,您可以将其导入 Unity,然后对其进行配置。在编辑器中,插件在 Unity 之外创建的一组代码,用于在 Unity 中创建功能。您可以在 Unity 中使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。 更多信息
参见术语表被视为一个资源,类似于脚本,您可以在检查器窗口中对其进行配置。
您可以使用插件配置来指定插件运行的位置;哪些平台和哪些平台配置,以及在什么条件下。
将插件导入项目的简单方法是单击并将其拖动到 Assets 文件夹或其子文件夹中。Unity 将特定文件和文件夹类型识别为插件。它还可以应用与插件预期平台匹配的默认设置。
Unity 将具有以下扩展名的文件视为插件
Unity 还将某些文件夹视为捆绑插件。Unity 不会在这些文件夹中查找其他插件文件,因此文件夹中的所有内容都被视为单个插件。Unity 将具有以下扩展名的文件夹视为捆绑插件
如果插件在 Assets 文件夹中的路径与特定于平台的模式匹配,则 Unity 会自动将特定于平台的默认设置应用于该插件。如果路径与任何模式都不匹配,则 Unity 会将编辑器平台的默认设置应用于该插件。
下表显示了 Unity 识别的路径模式。方括号中显示的路径部分是可选的。当路径包含双点时,它可以包含更多文件夹。
文件夹路径模式 | 默认设置 |
---|---|
Assets/../Editor/(x86 或 x86_64 或 x64) |
平台:仅限编辑器 CPU(可选):如果存在,则基于子文件夹。 |
Assets/../Plugins/(x86_64 或 x86 或 x64) |
平台:Windows、Linux 和 macOS CPU(可选):如果存在,则基于子文件夹。 |
Assets/Plugins/iOS | 平台:iOS |
Assets/Plugins/WSA/(SDK80 或 SDK81 或 PhoneSDK81)/(x86 或 ARM) |
平台:通用 Windows 平台 SDK(可选):如果存在,则基于子文件夹。出于兼容性原因,SDK81 为 Win81,PhoneSDK81 为 WindowsPhone81。 CPU(可选):如果存在,则基于子文件夹 注意:您可以使用关键字Metro代替WSA。 |
在 Unity 中,插件要么是托管的,要么是原生的。下表显示了每种类型的插件的相关设置
设置 | 托管 | 原生 |
---|---|---|
为插件选择平台 | x | x |
平台设置 | x | x |
资源标签 | x | x |
资源包 | x | x |
常规 | x | |
定义约束 | x | |
插件加载设置 | x |
要在检查器一个 Unity 窗口,显示有关当前选定的 GameObject、资源或项目设置的信息,允许您检查和编辑值。 更多信息
参见术语表中查看和更改插件设置,请在项目窗口中选择插件文件。
为插件选择平台和平台设置指定 Unity 在哪些构建中包含该插件。
下表描述了常用设置。
设置 | 选项 | 说明 | |
---|---|---|---|
为插件选择平台 | • 编辑器:用于播放模式和在编辑时运行的任何脚本。 • 独立:Windows、Linux 和 macOS。 • Unity 安装中包含的任何平台,例如 Android、iOS 和 Web。 |
要允许插件与尚未包含在 Unity 中的平台一起使用,请选中任何平台。如果您的不支持某些平台,您可以将其排除。 导入插件时,Unity 会将其加载到内存中。原生插件无法卸载;即使在更改其设置后,它也会在 Unity 会话中保持加载状态。要卸载插件,您必须重新启动 Unity。 |
|
平台设置 | 对于您选择的每个平台,您可以指定其他条件,例如 CPU 架构和依赖项。Unity 仅显示适用于您的平台的设置,并在可能的情况下,适用于该平台上的特定插件类型。例如,扩展名为 .dll 的原生插件文件只能在 Windows 上运行,因此 Unity 仅显示 Windows 设置。 | ||
编辑器 | • CPU 架构 • 操作系统 |
大多数托管插件都兼容任何 CPU 和操作系统。 大多数原生插件仅兼容单个操作系统,并且根据其编译方式,可能仅兼容单个 CPU 架构。 |
|
Windows、Linux 和 macOS | • CPU 架构 • 操作系统 |
托管库通常与任何操作系统和 CPU 架构兼容,除非它们访问特定的系统 API。 原生库仅兼容单个操作系统,但可以与 32 位、64 位或两种 CPU 架构兼容。 |
|
通用 Windows 平台 | 请参阅通用 Windows 平台:IL2CPP 脚本后端上的插件。 | ||
Android | CPU 架构 | CPU 架构必须与库编译所用的架构匹配。Unity 不会验证您的设置。 另请参阅:AAR 插件和 Android 库。 |
|
iOS 和 tvOS | • 框架依赖项 • CPU 架构 • 添加到嵌入式二进制文件 • 编译标志 |
指定您的插件兼容的 CPU 架构。Unity 提供 ARM64 和 X64 模拟器架构用于测试目的。 选择添加到嵌入式二进制文件选项时,Unity 会将 Xcode 项目选项设置为将插件文件复制到最终应用程序包中。对于以下情况执行此操作: • 动态加载的库。 • 包含动态加载库的捆绑包和框架。 • 任何需要在运行时加载的资源和资源。 在编译标志字段中,为 Unity 必须作为构建的一部分进行编译的插件源代码文件设置编译标志。 |
提示:有关其他常用设置的信息,请参阅资源包和在编辑器中搜索。
托管插件可以是第三方库或用户编译的程序集,您希望将其包含在项目中。
自动引用设置控制项目中的程序集定义如何引用插件文件。启用自动引用时,所有预定义的程序集和程序集定义都会自动引用插件文件。
默认情况下启用自动引用。
要限制可以引用插件的范围,请禁用自动引用。然后,您需要显式声明对该插件的所有引用。如果您希望执行以下操作,则可能需要这样做:
禁用自动引用时,Unity 无法从为您的项目创建的预定义程序集中引用插件。这些预定义的程序集包含项目中所有未分配给另一个程序集(使用程序集定义文件)的脚本。要引用来自具有禁用自动引用属性的插件的类、函数或其他资源,引用代码必须位于使用程序集定义文件创建的程序集中。例如,如果项目中的一组脚本使用插件,则必须为这些脚本创建程序集定义文件,并在定义文件中添加对插件的显式引用。
多个程序集可以使用插件,但所有程序集都必须显式声明依赖项。要了解有关 Unity 中程序集定义的更多信息,请参阅程序集定义。
注意:自动引用选项不影响文件是否包含在构建中。要控制插件的构建设置,请使用平台设置。
Unity 可以检查插件的引用是否在项目中可用。如果您不执行此验证,则用户在应用程序尝试使用缺失的引用时可能会遇到运行时错误。
启用验证引用选项以检查
如果您不想检查强命名引用,但仍想检查引用是否存在
您可以指定Unity加载插件到内存并引用它的条件。这些条件是必须满足的符号,这意味着已定义或未定义。
约束的工作方式类似于C#中的#if预处理器指令,但作用于程序集级别而不是脚本级别。您可以在程序集定义属性中了解更多关于约束的信息。
您可以使用Unity的任何内置定义符号,或在**项目设置** > **Player** > **其他设置** > **脚本编译** > **脚本定义符号**中添加符号。您添加的符号是特定于平台的,因此您需要为每个相关平台定义它们。有关更多信息,包括内置符号列表,请参阅平台相关编译。
提示:要指定某个符号必须未定义,请在其前面加上否定符号!(感叹号)。
在以下示例中,我们希望Unity仅在Unity 2018.3或更高版本中,非IL2CPP脚本运行时加载并引用插件。我们定义了两个约束,并且必须满足这两个约束
ENABLE_IL2CPP
未定义UNITY_2018_3_OR_NEWER
已定义您可以开始执行独立于图形初始化、脚本、资源加载、场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您可以放置环境、障碍物和装饰物,从本质上讲,您可以分段设计和构建游戏。 更多信息
参见词汇表等的本机代码。这与播放器加载本机插件的默认方式不同,默认方式是等到第一次调用插件函数之一时,通常由脚本执行。
要在应用程序执行任何脚本之前加载插件
UnityPluginLoad
。请参阅低级本机插件接口。提示:有关C#脚本调用插件函数的示例,请参阅手册:本机插件。