# 设置 JavaScript 插件

> Create a JavaScript plug-in that your Unity project can interact with.

您可以在 Unity 项目中从 JavaScript 插件调用函数。Unity 支持两种 JavaScript 插件文件类型，均用于将 JavaScript 代码添加到 Unity 项目中：

* .jslib
* .jspre

**注意**：Unity 目前支持 .jslib 和 .jspre 文件中的 [ECMAScript 5 (ES5) 语法](https://www.w3schools.com/js/js_es5.asp)。尚不支持 [ES6 语法](https://www.w3schools.com/js/js_es6.asp)。

如果要改为从 C++ 插件调用函数，请参阅[从 Unity C# 脚本调用 C/C++/C# 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browsers-c-to-unity.md)。

## 将 JavaScript 文件导入 Unity 项目##import-your-javascript-files-into-your-unity-project

在项目中使用浏览器 JavaScript 的建议方法是将 JavaScript 源代码（.jspre 和 .jslib 文件）添加到项目中，然后直接使用 Unity C# 脚本代码中的这些功能或库。

将 JavaScript 插件文件放在任何文件夹中，例如 `Assets/JSPlugins`。

## 从 .jslib 文件类型调用函数##call-functions-from-the-.jslib-file-type

您可以在 Unity C# 或原生脚本中从 .jslib 插件文件调用函数。

.jslib 文件类型使用 `--js-library` Emscripten 模块。有关更多信息，请参阅关于 [--js-library Emscripten 选项](https://emscripten.org/docs/tools_reference/emcc.html#emcc-js-library)的 Emscripten 文档。

以下代码显示了 .jslib 插件文件的示例，其中包含定义部分函数（`Hello` 和 `HelloString`）的理想语法。

```js
mergeInto(LibraryManager.library, {

  Hello: function () {
	window.alert("Hello, world!");
  },

  HelloString: function (str) {
	window.alert(UTF8ToString(str));
  },
});
```

然后，可以在 Unity C# 代码中调用以下函数：

```cs
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# 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-code-example.md)。

有关 Unity C# 和 JavaScript 之间交互的更多信息，请参阅[从 Unity C# 脚本调用 JavaScript 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md#example-unity-code)。

## 包含文件类型为 .jspre 的 JavaScript 库##include-javascript-libraries-with-the-.jspre-file-type

使用 .jspre 插件文件类型可在 JavaScript 代码中包含现有的 JavaScript 库。不能使用 Unity 代码与 .jspre 文件交互，但可以在 .jslib 代码中使用这些文件。

.jspre 文件类型使用 `--pre-js` Emscripten 选项。有关更多信息，请参阅关于 [--pre-js Emscripten 选项](https://emscripten.org/docs/tools_reference/emcc.html#emcc-pre-js)的 Emscripten 文档。

在构建过程中，Emscripten 会创建 `*.framework.js` 文件并将 .jspre 文件的内容复制到 `*.framework.js` 文件的开头。此过程很有用，因为所有代码都合并到一个文件中，因此更容易管理文件，并且代码受益于 Emscripten 优化。

## 其他资源##additional-resources

* [与浏览器脚本交互](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting.md)

* [从 Unity C# 脚本调用 JavaScript 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-js-to-unity.md)

* [从 JavaScript 调用 Unity C# 脚本函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-unity-to-js.md)

* [从 Unity C# 脚本调用 C/C++/C# 函数](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browsers-c-to-unity.md)

* [在 Unity C#、JavaScript 和 C/C++/C# 代码之间创建回调](/engine/6000.0/manual/platform-specific/webgl/develop/interactingwithbrowserscripting/web-interacting-browser-example.md)
