Unity3D :导入和配置插件
在线工具推荐:三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务
导入和配置插件
如果您有托管插件或本机插件,则可以将其导入 Unity 中,然后对其进行配置。在编辑器中,插件被视为类似于脚本的资源,您可以在检查器窗口中对其进行配置。
您可以使用插件配置来指定插件的运行位置;哪些平台和哪些平台配置,以及在哪些条件下
导入插件
将插件导入项目的最简单方法是单击插件并将其拖动到 Assets 文件夹或其子文件夹之一。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
插件默认设置
如果 Assets 文件夹中的插件路径与特定于平台的模式匹配,Unity 会自动将特定于平台的默认设置应用于插件。如果路径与任何模式都不匹配,Unity 会将编辑器平台默认设置应用于插件。
下表显示了 Unity 识别的路径模式。括号中显示的路径部分是可选的。当路径包含双点时,它可以包含更多文件夹。
文件夹路径模式 | 默认设置 |
---|---|
资产/。。/编辑器/(x86 或 x86_64 或 x64) | 平台:仅 编辑器 CPU(可选):基于子文件夹(如果存在)。 |
资产/。。/插件/(x86_64 或 x86 或 x64) | 平台:Windows、Linux 和 macOS CPU(可选):基于子文件夹(如果存在)。 |
资产/插件/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 在哪些版本中包含插件。
下表描述了常见设置。
设置 | 选项 | 注意事项 | |
---|---|---|---|
选择插件平台 | • 编辑器:适用于播放模式和在编辑时运行的任何脚本。 •独立:Windows,Linux和macOS。 • Unity 安装中包含的任何平台,例如 Android、iOS 和 WebGL。 | 要允许插件与 Unity 中尚未包含的平台配合使用,请选中任何平台。如果不支持单个平台,则可以排除它们。 导入插件时,Unity 会将其加载到内存中。无法卸载本机插件;即使您更改其设置,它仍会在 Unity 会话中加载。要卸载插件,必须重新启动 Unity。 | |
平台设置 | 对于所选的每个平台,可以指定其他条件,例如 CPU 体系结构和依赖项。Unity 仅显示适用于您的平台的设置,并在可能的情况下显示适用于该平台上的特定插件类型的设置。例如,扩展名为.dll的本机插件文件只能在 Windows 上运行,因此 Unity 仅显示 Windows 设置。 | ||
编辑 器 | • 中央处理器架构 • 操作系统 | 大多数受管插件都与任何 CPU 和操作系统兼容。大多数本机插件仅与单个操作系统兼容,并且根据它们的编译方式,可能只与单个 CPU 体系结构兼容。 | |
Windows、Linux 和 macOS | • 中央处理器架构 • 操作系统 | 托管库通常与任何操作系统和 CPU 体系结构兼容,除非它们访问特定的系统 API。 本机库仅与单个操作系统兼容,但可以与 32 位、64 位或两者的 CPU 体系结构兼容。 | |
通用视窗平台 | 请参阅通用 Windows 平台:IL2CPP 脚本后端上的插件。 | ||
人造人 | 中央处理器架构 | CPU 体系结构必须与编译库的体系结构匹配。Unity 不会验证您的设置。 另请参阅:AAR 插件和 Android 库。 | |
iOS 和 tvOS | • 框架依赖 • 添加到嵌入式二进制文件 • 编译标志 | 选择“添加到嵌入式二进制文件”选项时,Unity 会设置 Xcode 项目选项以将插件文件复制到最终应用程序包中。对: • 动态加载的库执行此操作。 • 包含动态加载库的捆绑包和框架。 • 需要在运行时加载的任何资产和资源。 在编译标志字段中,为 Unity 必须在构建过程中编译的插件源代码文件设置 compile 标志。 |
提示: 有关其他常见设置的信息,请参阅资源包和在编辑器中搜索。
托管插件设置
托管插件可以是要包含在项目中的第三方库或用户编译的程序集。
常规 - 自动参考
“自动引用”设置控制项目中的程序集定义如何引用插件文件。启用“自动参照”时,所有预定义的部件和部件定义都会自动参照插件文件。
默认情况下,自动引用处于启用状态。
要限制可以引用插件的范围,请禁用自动引用。然后,您需要显式声明对该插件的所有引用。在以下情况下,您可能需要执行此操作:
- 您希望防止脚本错误地使用该插件。
- 您正在对插件进行迭代,并希望减少编译时间。如果显式声明插件,Unity 将仅重新编译依赖程序集,而不是整个项目。
- 您希望防止资源商店包中使用的插件与导入包的项目中的其他代码发生冲突。
禁用自动引用后,Unity 无法从它为项目创建的预定义程序集中引用插件。这些预定义程序集包含项目中尚未使用程序集定义文件分配给其他程序集的所有脚本。若要从禁用了“自动引用”属性的插件引用类、函数或其他资源,引用代码必须位于使用程序集定义文件创建的程序集中。例如,如果项目中的一组脚本使用插件,则必须为这些脚本创建程序集定义文件,并在定义文件中添加对该插件的显式引用。
多个程序集可以使用该插件,但所有程序集都必须显式声明依赖项。要了解有关 Unity 中的程序集定义的更多信息,请参阅程序集定义。
注: “自动引用”选项对文件是否包含在构建中没有影响。要控制插件的构建设置,请使用平台设置。
常规 - 验证引用
Unity 可以检查插件的引用在项目中是否可用。如果不执行此验证,则当应用程序尝试使用缺少的引用时,用户可能会遇到运行时错误。
启用“验证引用”选项以检查:
- 插件的引用是否存在。例如,如果您的插件引用了插件 Newtonsoft.Json.dll,而 Unity 找不到 Newtonsoft.Json.dll,Unity 将显示错误。
- 强命名引用是否能够加载。这很重要,因为强命名引用需要与版本匹配。例如,如果使用对“b.dll”版本 2.0.0 的引用编译插件,则该版本必须位于项目中。
如果不想检查强命名引用,但仍想检查引用是否存在:
- 在插件检查器中,启用验证引用。
- 在“项目设置”>“播放器”>“其他设置”>禁用程序集版本验证。
定义约束
您可以指定 Unity 将插件加载到内存并引用它的条件。这些条件是必须满足的符号,这意味着已定义或未定义。
约束的工作方式类似于 C# 中的 #if 预处理器指令,但在程序集级别而不是脚本级别。可以在程序集定义属性中了解有关约束的详细信息。
您可以使用 Unity 的任何内置定义符号,也可以在“播放器”>“项目设置”中添加符号>“脚本编译”>“脚本定义符号”>其他设置。 您添加的符号是特定于平台的,因此您需要为每个相关平台定义它们。有关详细信息,请参阅依赖于平台的编译,包括内置符号的列表。
提示: 要指定符号必须未定义,请在其前面加上否定 !(感叹号)符号。
在以下示例中,我们希望 Unity 仅在 Unity 2018.3 或更高版本的非 IL2CPP 脚本运行时上加载和引用插件。我们定义了两个约束,这两个约束都必须满足:
ENABLE_IL2CPP
未定义UNITY_2018_3_OR_NEWER
已定义
插件加载设置 - 启动时加载
您可以开始执行独立于图形初始化、脚本、资产加载、场景等的本机代码。这与播放器加载本机插件的默认方式不同,后者是等到第一次调用插件的函数之一,通常由脚本执行。
要在应用程序执行任何脚本之前加载插件,请执行以下操作:
- 在插件中实现。请参阅低级本机插件接口。
UnityPluginLoad
- 在编辑器中,选择插件加载设置>启动时加载。
由3D建模学习工作室整理翻译,转载请注明出处!