Version: 6000.3
语言: 中文
本机插件
本机插件 API

为桌面平台构建插件

桌面平台插件是可以用 C、C++ 和 Objective C 编写的本机代码库。本页介绍插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表
适用于 macOS、Windows 和 Linux。有关更多信息,请参阅本机插件Unity 外部创建以在 Unity 中使用的特定于平台的本机代码库。允许您访问作系统调用和第三方代码库等功能,否则 Unity 无法使用这些功能。更多信息
请参阅术语表
.

macOS 插件

您可以将 macOS 插件部署为捆绑包,或者,如果您使用的是IL2CPP Unity 开发的脚本后端,在为某些平台构建项目时,可以将其用作 Mono 的替代方案。更多信息
请参阅术语表
脚本后端为Unity中的脚本提供支持的框架。Unity 支持三种不同的脚本后端,具体取决于目标平台:Mono、.NET 和 IL2CPP。但是,通用 Windows 平台仅支持两个:.NET 和 IL2CPP。更多信息
请参阅术语表
,松散的 C++ 文件,您可以使用以下命令调用这些文件[DllImport("__Internal")]语法。有关松散 C++ 插件的更多信息,请参阅 IL2CPP 的 C++ 源代码插件

要使用 Xcode 创建捆绑项目:

  1. 打开 Xcode。
  2. 选择 文件 > 新 > 项目 > macOS > 框架和库 > 捆绑包

有关使用 Xcode 的更多信息,请参阅 Apple 关于 Xcode 的文档

要求

  • 您可以将插件构建为与 64 位架构兼容的通用二进制文件。或者,您可以提供单独的 dylib 文件。
  • 如果您使用的是 C++ (.cpp) 或 Objective-C (.mm)实现插件,用C联动声明函数,避免名称混淆问题:
extern "C"
{
  float ExamplePluginFunction ();
}

Windows 插件

Windows 上的插件是.dll具有导出函数的文件,或者如果您使用的是 IL2CPP,则松散的 C++ 文件。您可以使用大多数语言和开发环境来创建.dll文件以创建插件。您必须使用 C 链接声明任何 C++ 函数,以避免名称混淆问题。

Linux 插件

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 中,插件检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
管理您的插件。要访问插件检查器,请在项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
术语表中查看
.对于独立平台,您可以选择与库兼容的 CPU 架构。对于跨平台插件,您必须包含.bundle文件(适用于 macOS)、.dllfile(适用于 Windows),以及.so文件(对于 Linux)。Unity 会自动为目标平台选择正确的插件,并将其包含在播放器中。有关详细信息,请参阅导入和配置插件

插件检查器
插件检查器

从 C# 脚本调用插件

将构建的插件放在 Unity 项目中的 Assets 文件夹或适当的特定于架构的子目录中。然后,当您从 C# 脚本调用它时,Unity 会按名称查找它。例如:[DllImport ("PluginName")] private static extern float ExamplePluginFunction ();

注意:不要在PluginName价值。例如,如果插件文件的实际名称是PluginName.dll在 Windows 上或libPluginName在 Linux 上,值应为PluginName在这两种情况下。

示例插件

您可以下载并使用这些项目来了解如何在 Unity 中实现插件。

  • 最简单的插件示例:该项目实现了基本作(例如,打印一个数字、打印一个字符串、添加两个浮点数和添加两个整数)。此项目包括 Windows、macOS 和 Linux 项目文件。
  • 原生渲染器插件:这是一个低级渲染插件,在完成所有常规渲染后,它从 C++ 代码渲染旋转三角形,并从 C++ 代码填充程序纹理,使用 Texture.GetNativeTexturePtr 访问它。此项目包括 Windows、UWP、macOS、Web 和 Android 文件。

其他资源

本机插件
本机插件 API