UnityPlayerActivity Java コードの拡張
Android スプラッシュスクリーンのカスタマイズ

Android の ネイティブ (C++) プラグイン

Unity supports native plug-ins for Android written in C/C++ and packaged in a shared library (.so) or a static library (.a). When using the IL2CPP scripting backend, you can use C/C++ source files as plug-ins and Unity compiles them along with IL2CPP generated files. This includes all C/C++ source files with extensions .c, .cc, .cpp and .h.

To build a C++ plug-in for Android, use the Android NDK and get yourself familiar with the steps required to build a shared library. The same applies to static libraries.

If you are using C++ to implement the plug-in, you must ensure the methods are declared with C linkage to avoid name mangling issues. By default, only the C source files that have a .c file extension in the plug-ins have C linkage (not C++).

extern "C" {
  float Foopluginmethod ();
}

ライブラリをビルドした後、出力された .so ファイルを Unity プロジェクト内の Assets/Plugins/Android ディレクトリにコピーします。インスペクターで Android のチェックボックスをオンにしてファイルを Android に適応させ、ドロップダウンメニューで適切な CPU アーキテクチャを設定してください。

インスペクターウィンドウの、ネイティブ(C++)プラグインのインポート設定
インスペクターウィンドウの、ネイティブ(C++)プラグインのインポート設定

C# スクリプトからネイティブプラグインのメソッドを呼び出すには、以下のコードを使用してください。

[DllImport ("pluginName")]
private static extern float Foopluginmethod();

pluginName には、ファイル名のプレフィックス (‘lib’) または拡張子 (’.so’)を加えないでください。すべてのネイティブプラグインメソッドの呼び出しを追加の C# コードレイヤーでラップすることが推奨されます。このコードは Application.platform を確認し、アプリケーションが実際のデバイス上で実行されている場合にのみネイティブメソッドを呼び出します。エディターで実行しているときには、ダミー値が C# コードから返されます。プラットフォーム依存のコードのコンパイルを制御するには、プラットフォームの定義を使用してください。

When you use C/C++ source files as plug-ins, you call them from C# in the same way except that you use __Internal for plug-in name, for example:

[DllImport ("__Internal")]
private static extern float Foopluginmethod();

ネイティブ(C++)プラグインの参考例

この zip ファイル にはネイティブコードプラグインの簡単な例が含まれています。 この例では、Unity アプリケーションからどのように C++ コードが呼び出されるかが確認できます。パッケージには、ネイティブプラグインが計算した 2 つの値の合計が表示されるシーンが含まれています。このプラグインをコンパイルするには Android NDK が必要です。



  • 2018–03–10 限られた 編集レビュー でパブリッシュされたページ

  • 5.5 のアップデート機能

  • Support for using C++ source files and static libraries as plug-ins on Android added in 2018.2 NewIn20182

UnityPlayerActivity Java コードの拡張
Android スプラッシュスクリーンのカスタマイズ