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

ネイティブプラグイン

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 を使用するときには、名前修飾の問題を避ける必要があります。

追加情報

マネージプラグイン
Building plug-ins for desktop platforms
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961