Version: Unity 6.0 (6000.0)
言語 : 日本語
Unity C# スクリプトから C/C++/C# 関数を呼び出す
Unity C#、JavaScript、C/C++/C# コード間のコールバックの作成

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

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# 関数の呼び出しを参照してください。

追加リソース

Unity C# スクリプトから C/C++/C# 関数を呼び出す
Unity C#、JavaScript、C/C++/C# コード間のコールバックの作成
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961