Version: 2018.4
マネージプラグイン
デスクトッププラットフォーム用プラグインのビルド

ネイティブプラグイン

Unity は、C、C++、Objective-C などで書かれたネイティブコードのライブラリであるネイティブの プラグイン を幅広くサポートしています。プラグインにより、Javascript や C# で書かれたゲームコードがこれらのライブラリから関数を呼び出すことができます。この機能により、Unity はミドルウェアライブラリや既存の C/C++ ゲームコードと統合することができます。

ネイティブのプラグインを使用するためには、最初に、必要な機能にアクセスし、それらをライブラリにコンパイルするために、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 ());
           }
        }

Javascript を使用する場合、以下の構文を使用する必要があることに注意してください。ここで、DLLName は作成したプラグインの名前で、静的にリンクされたネイティブコードを作成する場合は “__Internal” です。

    @DllImport (DLLName)
        static private function FooPluginFunction () : float {};

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

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

追加情報

マネージプラグイン
デスクトッププラットフォーム用プラグインのビルド