可以在 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 函数。
要允许 Unity 项目从 C/C++/C# 插件代码调用函数,需要将插件导入 Unity 项目中。
将 JavaScript 插件文件放在任意文件夹中,例如 Assets/JSPlugins
。
如果使用 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);
}
}