您可在 Unity 项目中调用 JavaScript 插件中的函数。Unity 支持两种 JavaScript 插件在一组非 Unity 代码中创建 Unity 中的功能。Unity 中可以使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参见 术语文件类型,这些文件类型允许您将 JavaScript 代码添加到 Unity 项目中
.jslib
.jspre
如果您想改为从 C++ 插件中调用函数,请参阅 从 Unity C# 脚本中调用 C/C++/C# 函数。
在项目中使用浏览器 JavaScript 的建议方法是将 JavaScript 源(.jspre
和 .jslib
文件)添加到项目中,然后直接在 Unity C# 脚本代码中使用那些函数或库。
将 JavaScript 插件文件置于任何文件夹中,如 Assets/JSPlugins
。
您可以在 Unity C# 或本机 脚本一段代码,允许您创建自己的组件,触发游戏事件,修改组件属性,并根据需要随时响应用户输入。更多信息
请参见 术语中从 .jslib
插件文件中调用函数。
.jslib
文件类型使用 --js-library
Emscripten 模块。有关详细信息,请参阅 Emscripten 文档中的 –js-library Emscripten 选项。
以下代码展示了一个 .jslib
插件文件示例,该示例包含定义了一些函数(Hello
和 HelloString
)的理想语法。
mergeInto(LibraryManager.library, {
Hello: function () {
window.alert("Hello, world!");
},
HelloString: function (str) {
window.alert(UTF8ToString(str));
},
});
您可以在 Unity C# 代码中调用这些函数
using UnityEngine;
using System.Runtime.InteropServices;
public class NewBehaviourScript : MonoBehaviour {
[DllImport("__Internal")]
private static extern void Hello();
[DllImport("__Internal")]
private static extern void HelloString(string str);
void Start() {
Hello();
HelloString("This is a string.");
}
}
有关 Unity C# 和 JavaScript 函数之间代码交互的一个完整示例,请参阅 代码示例:在 Unity 中调用 JavaScript 和 C/C++/C# 函数。
有关 Unity C# 与 JavaScript 之间交互的详细信息,请参阅通过 Unity C# 脚本调用 JavaScript 函数。
使用 .jspre
插件文件类型在 JavaScript 代码中包含现有 JavaScript 库。尽管不能使用 Unity 代码与 .jspre
文件交互,但可在 .jslib
代码中使用这些文件。
.jspre
文件类型会使用 --pre-js
Emscripten 选项。有关详细信息,请参阅 Emscripten 针对–pre-js Emscripten 选项的文档。
在构建过程中,Emscripten 会创建 *.framework.js
文件,并将 .jspre
文件中的内容复制到 *.framework.js
文件的开头。此过程十分有用,因为所有代码都已合并到一个文件中,这使得管理文件更加容易,并且代码还受益于 Emscripten 优化。