# JavaScript プラグインの設定

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

Unity プロジェクトで、JavaScript プラグインから関数を呼び出すことができます。Unity は、Unity プロジェクトに JavaScript コードを追加できる 2 種類の JavaScript プラグインファイルをサポートしています。

* .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) を参照してください。

## Unity プロジェクトへの JavaScript ファイルのインポート##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 のドキュメントを参照してください。

以下のコードは、いくつかの関数 (`Hello` と `HelloString`) を定義する最適な構文を持つ .jslib プラグインファイルの例です。

```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` ファイルの開始部分にコピーします。このプロセスは、すべてのコードが 1 つのファイルにまとめられるためファイルの管理が容易になり、コードが 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)

* [Unity C# スクリプト関数を JavaScript から呼び出す](/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)
