版本:Unity 6 (6000.0)
语言:中文
从 JavaScript 调用 Unity C# 脚本函数
将静态库编译为 Unity 插件

从 Unity C# 脚本调用 C/C++/C# 函数

可以在 Unity 项目中插件在 Unity 外部创建的代码,可在 Unity 中创建功能。可在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(平台特定的本机代码库)。更多信息
请参阅 术语表
中的 C、C++ 或 C# 函数。

Unity 使用 Emscripten 根据 C/C++/C# 代码将你的源代码编译为 WebAssembly,这样你就可以用 C/C++/C# 代码编写插件,并从 Unity C# 脚本代码片段,可让你创建自己的组件、触发游戏事件、随时间修改组件属性以及以任何想要的方式响应用户输入。 更多信息
请参阅 术语表
中调用这些函数。

若要从 JavaScript 插件调用函数,请参阅 从 Unity C# 脚本调用 JavaScript 函数

将 C/C++/C# 插件导入到 Unity 项目中

要允许 Unity 项目从 C/C++/C# 插件代码调用函数,需要将插件导入 Unity 项目中。

将 JavaScript 插件文件放在任意文件夹中,例如 Assets/JSPlugins

可在 Unity 中使用的 C++ 代码示例

如果使用 C++ (.cpp) 实现插件,则必须使用 C 链接(extern “C”)声明函数,以避免名称混淆问题。下述代码是 C++ 插件示例,其中包含可在 Unity 项目中调用的简单函数。

#include <stdio.h>

extern "C" void Hello ()
{
    printf("Hello, world!\n");
}

extern "C" int AddNumbers (int x, int y)
{
    return x + y;
}

注意:Unity 使用 Emscripten 版本 2.0.19 工具链。

在 Unity 项目中使用以下 Unity C# 代码以调用 C++ 函数。

using UnityEngine;
using System.Runtime.InteropServices;

public class NewBehaviourScript : MonoBehaviour {

    [DllImport("__Internal")]
    private static extern void Hello();

    [DllImport("__Internal")]
    private static extern int AddNumbers(int x, int y);

    void Start() {
        Hello();
        
        int result = AddNumbers(5, 7);
        Debug.Log(result);  
    }
}

其他资源

从 JavaScript 调用 Unity C# 脚本函数
将静态库编译为 Unity 插件