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

将静态库编译为 Unity 插件

您可以使用 Emscripten 编译库并使用 Unity 中的库。从封装 C++ 代码的库调用函数可能比从插件目录直接调用 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) 设置,可能需要向 C/C++ 项目添加部分编译器选项(播放器设置菜单:编辑 (Edit) > 项目设置 (Project Settings) > 播放器 (Player))。

属性 描述
Enable Exceptions 如果此属性设置为无 (None),请添加编译器选项“-fno-exceptions”。
Enable Native C/C++ Multithreading 如果启用此属性,请包含编译器选项“-pthread”。
Enable WebAssembly 2023 如果启用此属性,请包含以下编译器选项:
  • “-fwasm-exceptions”
  • “-sSUPPORT_LONGJMP=wasm”
  • “-mbulk-memory”
  • “-mnontrapping-fptoint”
  • “-msimd128”
  • “-msse4.2”

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

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

注意:如果没有 Plugins 文件夹,则需要创建自己的文件夹。

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

您可以从 Unity C# 脚本中调用静态库函数。调用函数的方式与从 C# 脚本调用 C 或 C++ 函数的方式相同。有关示例,请参阅从 Unity C# 脚本调用 C/C++/C# 函数

其他资源

从 Unity C# 脚本调用 C/C++/C# 函数
在 Unity C#、JavaScript 和 C/C++/C# 代码之间创建回调
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961