Version: 2020.2
マネージプラグイン
Building plug-ins for desktop platforms

ネイティブプラグイン

Unity has extensive support for native plug-ins, which are libraries of native code written in C, C++, Objective-C, etc. Plug-ins allow your game code (written in C#) to call functions from these libraries. This feature allows Unity to integrate with middleware libraries or existing C/C++ game code.

ネイティブのプラグインを使用するためには、最初に、必要な機能にアクセスし、それらをライブラリにコンパイルするために、C 言語の関数を作成する必要があります。Unity では、ネイティブライブラリの関数を呼び出す C# スクリプトも作成する必要があります。

ネイティブのプラグインは、C# スクリプトが他のユーザースクリプトにアクセスする簡単な C インターフェースを提供します。また、 ある低レベルのレンダリングイベントが発生したとき (例えば、グラフィックススデバイスが作成されたときなど) に、ネイティブプラグインによってエクスポートされた関数を呼び出すことも可能です。詳しくは、低レベルのネイティブプラグインインターフェース を参照してください。

以下のような 1 つの機能を持つ非常に簡単なネイティブライブラリのソースコードの例があるとします。

    float FooPluginFunction () { return 5.0F; }

Unity 内からこのコードにアクセスするには、次のようなコードを使用できます。

    using UnityEngine;
        using System.Runtime.InteropServices;

        class SomeScript : MonoBehaviour {

           #if UNITY_IPHONE
   
           //  iOS では、プラグインは静的に実行ファイルに
           // リンクしているので、ライブラリ名として __Internal を
           // 使用しなければなりません。
           [DllImport ("__Internal")]

           #else

           // 他のプラットフォームでは、プラグインを動的に読み込んで
           // いるので、プラグインの名前を動的ライブラリに渡します。
           [DllImport ("PluginName")]
    
           #endif

           private static extern float FooPluginFunction ();

           void Awake () {
              // プラグイン内部で FooPluginFunction を呼び出します。
              //  5 をコンソールに表示します。
              print (FooPluginFunction ());
           }
        }

ネイティブプラグインの作成

一般的に、プラグインは、ターゲットプラットフォームのネイティブコードのコンパイラーでビルドされます。プラグイン関数は C 言語の呼び出しインタフェースを使用するため、C++ や Objective-C を使用するときには、名前修飾の問題を避ける必要があります。

追加情報

マネージプラグイン
Building plug-ins for desktop platforms