版本:Unity 6 (6000.0)
语言:中文
从 Unity C# 脚本调用 C/C++/C# 函数
在 Unity C#、JavaScript 与 C/C++/C# 代码之间创建回调

将静态库编译为 Unity 插件

你可以使用 Emscripten 编译库,并在 Unity 中使用这些库。调用封装 C++ 代码的库中的函数可能比直接从 插件在 Unity 外部创建的代码集,用于在 Unity 中创建功能。可在 Unity 中使用的插件有两种类型:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。 更多信息
请参见 词汇表
目录中调用 C++ 代码更有益处。这样做的好处包括:

  • 你的代码更容易与你的 Web Unity 项目集成。
  • 你的代码运行会比你从 C++ 代码调用函数时更好,尤其是对于大型库。
  • 你可以在多个项目中重复使用该代码。

在 Unity 中使用静态库的步骤

若要编译一个可作为 Unity 插件使用的静态库,请

  1. 下载 Emscripten SDK
  2. 配置任何现有的项目脚本
  3. 更新编译器选项
  4. 编译并导入你的静态库文件
  5. 从 C# 脚本调用你的静态库函数

1. 下载 Emscripten SDK

你必须下载与你的 Unity 版本匹配的 Emscripten SDK。

若要找到适用于你的 Unity 版本的正确 Emscripten 版本,请参阅 适用于 Emscripten 的 Web 本机插件

若要获取下载链接和有关如何安装 Emscripten SDK 的更多信息,请参阅 下载并安装(Emscripten)。

2. 配置任何现有的项目脚本

Emscripten 可作为 gcc 或 clang 编译器的替代。如果你有现有的 C/C++ 代码,你需要对你的 C++ 项目进行以下更改

  • 使用 “emcc” 作为 C/C++ 编译器
  • 使用 “emar” 作为静态链接器

更多信息,请参阅 Emscripten 文档中的 编译和运行项目

3. 更新你的编译器选项

如果 Unity 项目具有以下 **Player** 设置(菜单:**编辑** > **项目设置** > **Player**),你可能需要在你的 C/C++ 项目中添加一些编译器选项。

属性 说明
启用异常 如果此属性设置为 **无**,请添加编译器选项“-fno-exceptions”。
启用 Native C/C++ 多线程 如果启用了此属性,请添加编译器选项“-pthread”。
启用 WebAssembly 2023 如果启用了此属性,请添加以下编译器选项
  • “-fwasm-exceptions”
  • “-sSUPPORT_LONGJMP=wasm”
  • “-mbulk-memory”
  • “-mnontrapping-fptoint”
  • “-msimd128”
  • “-msse4.2”

4. 编译并导入静态库文件

编译静态库文件,然后将文件导入到 Assets/Plugins 文件夹中的 Unity 项目中。

注意:如果你没有 **插件** 文件夹,需要创建自己的文件夹。

5. 从 Unity C# 脚本中调用静态库函数

你可以从 Unity C# 脚本允许你创建自己的组件、触发游戏事件、随时修改组件属性以及响应用户输入的代码片段。 了解更多信息
请在 术语表 中查看
中调用静态库函数。调用的方式与从 C# 脚本中调用 C 或 C++ 函数相同。有关示例,请参阅 从 Unity C# 脚本中调用 C/C++/C# 函数

其他资源

从 Unity C# 脚本调用 C/C++/C# 函数
在 Unity C#、JavaScript 与 C/C++/C# 代码之间创建回调