桌面平台的插件是您可以使用 C、C++ 和 Objective C 编写的原生代码库。此页面描述了适用于 macOS、Windows 和 Linux 的插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。您可以在 Unity 中使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。更多信息
参见术语表。有关更多信息,请参阅原生插件特定于平台的原生代码库,在 Unity 外部创建,用于在 Unity 中使用。允许您访问诸如操作系统调用和第三方代码库等功能,否则这些功能将无法用于 Unity。 更多信息
参见术语表。
您可以将 macOS 插件部署为捆绑包,或者如果您使用的是IL2CPPUnity 开发的脚本后端,您可以在为某些平台构建项目时将其用作 Mono 的替代方案。 更多信息
参见术语表 脚本后端为 Unity 中的脚本提供支持的框架。根据目标平台,Unity 支持三种不同的脚本后端:Mono、.NET 和 IL2CPP。但是,通用 Windows 平台仅支持两种:.NET 和 IL2CPP。 更多信息
参见术语表,则可以使用松散的 C++ 文件,您可以使用[DllImport("__Internal")]
语法调用这些文件。有关松散 C++ 插件的更多信息,请参阅用于 IL2CPP 的 C++ 源代码插件。
使用 Xcode 创建捆绑项目
有关使用 Xcode 的更多信息,请参阅Apple 的 Xcode 文档。
.cpp
)或 Objective-C(.mm
)来实现插件,请使用 C 链接声明函数以避免名称修饰问题extern "C"
{
float ExamplePluginFunction ();
}
Windows 上的插件要么是带有导出函数的.dll
文件,要么是如果您使用 IL2CPP 的松散 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 中,插件检查器一个 Unity 窗口,显示有关当前选定的游戏对象、资源或项目设置的信息,允许您检查和编辑值。更多信息
参见术语表管理您的插件。要访问插件检查器,请在项目窗口一个窗口,显示您的Assets
文件夹(项目选项卡)的内容 更多信息
参见术语表中选择一个插件文件。对于独立平台,您可以选择库兼容的 CPU 架构。对于跨平台插件,您必须包含.bundle
文件(对于 macOS)、.dll
文件(对于 Windows)和.so
文件(对于 Linux)。Unity 会自动为目标平台选择正确的插件并将其包含在播放器中。有关更多信息,请参阅导入和配置插件。
将您构建的插件放置在Assets文件夹或 Unity 项目中相应的特定于架构的子目录中。然后,当您从 C# 脚本调用它时,Unity 会通过名称找到它。例如:[DllImport ("PluginName")] private static extern float ExamplePluginFunction ();
注意:不要在PluginName
值中包含库前缀或文件扩展名。例如,如果插件文件的实际名称在 Windows 上为PluginName.dll
,在 Linux 上为libPluginName
,则在这两种情况下,值都应为PluginName
。
您可以下载并使用这些项目来学习如何在 Unity 中实现插件。