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

将静态库编译为 Unity 插件

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

  • 您的代码更容易与 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 > Edit > Project Settings),则可能需要向 C/C++ 项目添加一些编译器选项。

财产 描述
启用例外 如果此属性设置为 None,请添加编译器选项“-fno-exceptions”。
启用本机 C/C++ 多线程 如果启用了此属性,请包含编译器选项“-pthread”。
启用 WebAssembly 2023 如果启用了此属性,请包括以下编译器选项:
  • “-fwasm-异常”
  • “-sSUPPORT_LONGJMP=瓦斯姆”
  • “-mbulk-内存”
  • “-mnontrapping-fptoint”
  • “-msimd128”
  • “-msse4.2”

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

编译静态库文件,然后将文件导入 Unity 项目中的Assets/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# 代码之间创建回调