如果您有一个 托管插件使用Visual Studio等工具创建的受管理的.NET程序集,可用于Unity。 更多信息
参考术语表 或一个 本地插件在Unity之外创建的特定于平台的本机代码库,可用于Unity。 允许访问像操作系统调用和第三方代码库等在Unity中原本无法使用的功能。 更多信息
参考术语表,您可以将其导入Unity,然后配置它。 在编辑器中,一个 插件在Unity外部创建的一系列代码,用于在Unity中创建功能。 您在Unity中可以使用两种类型的插件:托管插件(使用Visual Studio等工具创建的受管理的.NET程序集)和本地插件(特定于平台的本机代码库)。 更多信息
参考术语表 作为资产处理,就像脚本一样,您可以在检查器窗口中配置它。
您可以使用插件配置来指定插件运行的位置;哪些平台以及哪些平台配置,以及在什么条件下
将插件导入项目的最简单方法是在编辑器中单击并拖动插件到“资产”文件夹或其子文件夹。 Unity将某些文件和文件夹类型识别为插件。 它还可以应用与插件预期的平台匹配的默认设置。
Unity将以下扩展名的文件视为插件
Unity还认为某些文件夹为捆绑插件。 Unity在这些文件夹中不会查找额外的插件文件,因此文件夹中的所有内容都视为单个插件。 Unity将以下扩展名的文件夹视为捆绑插件
如果插件在“资产”文件夹中的路径匹配特定平台的模式,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) |
平台: 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、资产或项目设置的详细信息,允许您检查和编辑值。 更多信息
在 术语表 中查看 中查看并更改插件设置,请在 项目 窗口中选择插件文件。
选择插件平台 和 平台设置 指定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加载到内存中并引用插件的条件。这些条件是必须满足的符号,这意味着它们要么被定义,要么被未定义。
约束类似于 C# 中的 #if 预处理器指令,但它在汇编级别而不是脚本级别上工作。您可以在汇编定义属性中了解更多有关约束的信息。
您可以使用 Unity 的任何内置定义符号,或者在“项目设置” > “播放器” > “其他设置” > “脚本编译” > “脚本定义符号”中添加符号。您添加的符号是平台特定的,因此您需要为每个相关平台定义它们。有关更多信息,包括内置符号列表,请参阅平台相关编译。
提示:为了指定某个符号必须未定义,请在其前加上一个否定符号!(感叹号)。
以下示例中,我们希望 Unity 仅在 Unity 2018.3 或更高版本的 IL2CPP 编写时环境上加载和引用插件。我们定义了两个约束,并且两者都必须满足
ENABLE_IL2CPP
未定义UNITY_2018_3_OR_NEWER
已定义您可以开始执行与图形初始化、脚本、资产加载、场景场景包含您的游戏的环境和菜单。每个独特的场景文件代表一个独特的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是在逐步设计和构建您的游戏。更多信息
在术语表中查看等等独立于的资源。这与玩家默认加载原生插件的默认方式不同,通常是在脚本执行第一个插件函数时发生(通常是脚本的操作)。
在应用程序执行任何脚本之前加载插件
UnityPluginLoad
。请参阅低级原生插件接口。提示:有关 C# 脚本调用插件函数的示例,请参阅手册:原生插件。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.