桌面平台的插件是可以用 C、C++ 和 Objective C 编写的原生代码库。本页面介绍适用于 macOS、Windows 和 Linux 的插件。有关更多信息,请参阅原生插件。
可以将 macOS 插件部署为捆绑包,如果使用 IL2CPP 脚本后端,则可以部署为松散的 C++ 文件(可以使用 [DllImport("__Internal")] 语法进行调用)。有关松散 C++ 插件的更多信息,请参阅适用于 IL2CPP 的 C++ 源代码插件。
要使用 Xcode 创建捆绑包项目,请执行以下操作:
有关使用 Xcode 的更多信息,请参阅 Apple 关于 XCode 的文档。
.cpp) 或 Objective-C (.mm) 来实现插件,请使用 C 链接来声明函数,从而避免名称修饰问题:extern "C"
{
float ExamplePluginFunction ();
}
Windows 上的插件是具有所导出函数的 .dll 文件,如果使用__ IL2CPP__种由 Unity 开发的脚本后端,可在为某些平台构建项目时替代 Mono。更多信息
See in Glossary,则是松散的 C++ 文件。可以使用大多数可创建 .dll 文件的语言和开发环境来创建插件。必须使用 C 链接来声明任何 C++ 函数,从而避免名称修饰问题。
Linux 上的插件是具有导出函数的 .so 文件。虽然这些库通常采用 C 或 C++ 编写,但可使用任何语言编写。必须使用 C 链接来声明任何 C++ 函数,从而避免名称修饰问题。
为 Linux 构建原生插件时,如果构建的库依赖于另一个原生插件,则必须在编译时指定该库的 rpath。
添加链接器标志 -Wl, -rpath=$ORIGIN 以指定运行时搜索路径。链接器标志指示加载程序除了搜索系统搜索路径之外,还要在库的当前目录中查找其依赖项。可以将其他链接器标志与 -Wl, -rpath=$ORIGIN 一起添加,但 Unity 无法控制它们。例如,/usr/bin/g++ -o binary.c.o -Wl,-rpath=$ORIGIN。
或者,也可以在环境中设置 LD_LIBRARY_PATH=dependency path 来指示加载程序在该路径中搜索依赖项。Linux 不会自动在当前目录中搜索依赖项。请确保设置正确的依赖项搜索路径,因为不正确的路径会导致 Unity 编辑器中出现缺少库错误。
在 Unity 中,插件检视面板 (Plugin Inspector) 负责管理插件。要访问插件检视面板,请在项目 (Project) 窗口中选择一个插件文件。对于独立平台,可以选择与库兼容的 CPU 架构。对于跨平台插件,必须包含 .bundle 文件(对于 macOS)、.dll 文件(对于 Windows)和 .so 文件(对于 Linux)。Unity 会自动为目标平台选择正确的插件并将该插件包含在播放器中。有关更多信息,请参阅导入和配置插件。
将已构建的插件放在 Assets 文件夹中或是 Unity 项目中特定于架构的合适子目录中。然后,从 C# 脚本调用 Unity 时,Unity 会按名称查找它。例如:[DllImport ("PluginName")] private static extern float ExamplePluginFunction ();
注意:PluginName 值中不可包含库前缀或文件扩展名。例如,如果插件文件的实际名称在 Windows 上为 PluginName.dll 或在 Linux 上为 libPluginName,则这两种情况下的值都应为 PluginName。
可以下载并使用这些项目来了解如何在 Unity 中实现插件。