ドキュメント

Unity Engine

Unity Engine

Emscripten 用のウェブネイティブプラグイン

Web native plug-ins for Emscripten.
読み終わるまでの所要時間 7 分最終更新 1ヶ月前

Unity では Emscripten コンパイラー ツールチェーンを使用して Unity ランタイムコード (C および C++ で記述されています) を WebAssembly (Wasm とも呼ばれます) にクロスコンパイルしています。Emscripten は小さなコードを生成し、ロード時間とメモリ効率に優れ、ネイティブスピードに近い実行速度を目指しています。
Unity は IL2CPP を使用して、C# スクリプトの .NET ゲームコードを Wasm に変換します。IL2CPP は .NET バイトコードを取得し、それを対応する C++ ソースファイルに変換し、Emscripten を使用してスクリプトを Wasm に変換します。

ターゲットとなるバージョン

Unity は Emscripten コンパイラーを Web platform パッケージにバンドルしているため、手動でダウンロードする必要はありません。エディターが使用する Emscripten のバージョンは、エディターのバージョンによって異なります。

Unity バージョン

Emscripten バージョン

サポートされるネイティブプラグインファイル形式

Unity 2023.2 以降Emscripten 3.1.38-unity.a、.bc
Unity 2022.2 以降Emscripten 3.1.8-unity.a、.bc
Unity 2021.2 以降Emscripten 2.0.19.6-unity.a、.bc
Unity 2019.2 から 2021.11.38.11-unity.bc
Unity 2018.4 から Unity 2019.2 まで1.37.40-unity.bc
Unity 2018.2 から Unity 2018.4 まで1.37.33-unity.bc
注:
  • 以下のリストは、上の表にリストされているファイル形式の略語の意味を示しています。
    • GNU アーカイブファイル形式 (
      .a
      )
    • WebAssembly Object File (
      .o
      )
    • LLVM Bitcode ファイル形式 (
      .bc
      )
  • Emscripten 2.0 より前のバージョンの Emscripten では、Unity は
    Bitcode
    プラグイン (
    .bc
    タイプのファイル) のビルドを推奨しています。Emscripten 2.0 以降では、Unity は
    Wasm Object File
    プラグインのビルドを推奨しています。これは、
    .o
    タイプの Wasm オブジェクトファイルで、
    .a
    タイプの GNU アーカイブファイルにバンドルされています。
Emscripten ツールチェーンの正確なバージョンへのパスは、以下の場所にある
emscripten-version.txt
から確認できます。
C:\Program Files\Unity\Hub\Editor\<Editor version>\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\emscripten-version.txt

Emscripten によるネイティブプラグインのコンパイル

Unity アプリケーション用のネイティブ C/C++ プラグインを作成する場合は、C/C++ コードをプロジェクトにバンドルすることも (ネイティブプラグイン を参照)、Emscripten コンパイラーツールチェーンを使用してネイティブコードを事前にプラグインアーカイブにビルドすることもできます。
事前にプラグインコードをビルドする場合は、Emscripten コンパイラーツールチェーンを使用する必要があります。LLVM バイナリ形式 互換性を確保するため、プラグインのコンパイルに使用される Emscripten のバージョンは、Unity が使用する Emscripten のバージョンと一致する必要があります。
通常、プラグインは静的ライブラリアーカイブ形式にコンパイルされます。Unity 2021.2 (Emscripten 2.0) より前のバージョンでは、LLVM Bitcode ファイル形式 (
.bc
) が推奨されるプラグイン形式です。
Unity 2021.2 以降では、推奨されるプラグイン形式は、WebAssembly Object File (
.o
) を含む GNU アーカイブファイル形式 (
.a
) です。以前の LLVM Bitcode .bc プラグインファイルは引き続きサポートされていますが、使用するとコンパイル時間に悪影響を及ぼす可能性があります。
注意ネイティブプラグインをある Unity バージョンから異なるバージョンの Emscripten を使用する Unity バージョンに移行する場合、LLVM コンパイラープロジェクトはコンパイラーバージョン間のビルドアーティファクトファイルのバイナリ互換性を保証しないため、Unity では Unity プラグインをソースから再コンパイルすることを推奨しています。

Emscripten ビルドフラグ

WebAssembly 2023 または C/C++ マルチスレッドで使用する WebAssembly Object File をコンパイルする場合は、以下の Emscripten ビルドフラグを追加します。これらのフラグがないと、コードは Unity でビルドされたコードと正しくリンクしない可能性があります。

ターゲット

必須の Emscripten ビルドフラグ

WebAssembly 2023
-msimd128
-fwasm-exceptions
-mbulk-memory
-mnontrapping
-fptoint
-msse4.2
-sWASM_BIGINT
-sSUPPORT_LONGJMP=wasm
C/C++ ネイティブマルチスレッド
-pthread

その他の参考資料