ドキュメント

Unity Engine

Unity Engine

静的ライブラリを Unity プラグインとしてコンパイルする

Call functions from a static library.
読み終わるまでの所要時間 6 分最終更新 1ヶ月前

Emscripten でライブラリをコンパイルし、Unity でライブラリを使用できます。関数の呼び出しは、プラグインディレクトリから直接 C++ コードを呼び出すよりも、C++ コードをカプセル化したライブラリから行う方が便利な場合があります。具体的には以下のメリットがあります。
  • コードをウェブ Unity プロジェクトと統合しやすくなります。
  • 特に大規模なライブラリでは、C++ コードから関数を呼び出すよりもコードのパフォーマンスが向上します。
  • コードをさまざまなプロジェクトで再利用できます。

Unity で静的ライブラリを使用する手順

Unity プラグインとして使用できる静的ライブラリをコンパイルするには、以下の手順を実行します。
  1. Emscripten SDK のダウンロード
  2. 既存のプロジェクトスクリプトの設定
  3. コンパイラーオプションの更新
  4. 静的ライブラリファイルのコンパイルとインポート
  5. C# スクリプトからの静的ライブラリ関数の呼び出し

1. Emscripten SDK のダウンロード

使用している Unity のバージョンに合った Emscripten SDK をダウンロードする必要があります。
対象の Unity バージョンに適したバージョンの Emscripten を見つけるには、Emscripten のウェブネイティブプラグインを参照してください。
Emscripten SDK のダウンロードリンクとインストール方法の詳細については、ダウンロードとインストール (Emscripten) を参照してください。

2. 既存のプロジェクトスクリプトの設定

Emscripten は、gcc または clang コンパイラーの代替として機能します。既存の C/C++ コードがある場合は、C++ プロジェクトで以下の変更を行う必要があります。
  • C/C++ コンパイラーとして "emcc" を使用する
  • 静的リンカーとして "emar" を使用する
詳細については、Emscripten のドキュメントでプロジェクトのコンパイルと実行を参照してください。

3. コンパイラーオプションの更新

Unity プロジェクトに以下の Player 設定 (メニュー: Edit > Project Settings > Player) がある場合は、C/C++ プロジェクトに対していくつかのコンパイラーオプションの追加が必要な場合があります。

プロパティ

説明

Enable Exceptionsこのプロパティが None に設定されている場合は、コンパイラーオプション "-fno-exceptions" を追加します。
Enable Native C/C++ Multithreadingこのプロパティが有効になっている場合は、コンパイラーオプション "-pthread" を指定します。
Enable WebAssembly 2023このプロパティが有効になっている場合は、以下のコンパイラーオプションを指定します。
  • "-fwasm-exceptions"
  • "-sSUPPORT_LONGJMP=wasm"
  • "-mbulk-memory"
  • "-mnontrapping-fptoint"
  • "-msimd128"
  • "-msse4.2"

4. 静的ライブラリファイルのコンパイルとインポート

静的ライブラリファイルをコンパイルし、
Assets/Plugins
フォルダー内の Unity プロジェクトにファイルをインポートします。
ノート: Plugins フォルダーがない場合は、自分で作成する必要があります。

5.Unity C#スクリプトからの静的ライブラリ関数の呼び出し

Unity C# スクリプトから静的ライブラリ関数を呼び出しことができます。関数の呼び出し方法は、C# スクリプトから C または C++ 関数を呼び出す場合と同じです。例については、Unity C# スクリプトからの C/C++/C# 関数の呼び出しを参照してください。

追加リソース