Version: 2020.1
言語: 日本語
マネージプラグイン
IL2CPP によるマネージスタックトレース

ネイティブプラグイン

Unityは、C、C++、Objective-C などで書かれたネイティブコードのライブラリであるネイティブ プラグイン を幅広くサポートしています。プラグインを使用すると、ゲームコード (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 ());
           }
        }

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

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

追加情報

マネージプラグイン
IL2CPP によるマネージスタックトレース