Version: 6000.3
语言: 中文
从 JavaScript 调用 Unity C# 脚本函数
将静态库编译为 Unity 插件

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

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

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 插件