UnityはC,C++,Objective-C等で記述されたライブラリを Plugins でサポートしています。プラグインはゲームのコード(JavaScriptやC#,Booで記述されている)からライブラリの関数を呼び出すことができます。この機能はUnityをミドルウェアライブラリや既存のC/C++コードと統合することができます。
注意: デスクトッププラットフォームでは,プラグインはPro専用の機能です。またセキュリティ的な理由によりプラグインはWebplayerでは利用できません。
プラグインを使うためには,以下の2つの作業を行う必要があります。
プラグインは単純なC言語で書かれたインターフェースをC#や他のスクリプトに提示します。さらに,Unityでは特定の低レベルのレンダリングイベントが発生した時(例えばグラフィックデバイスを生成した時)にエクスポートした関数を呼び出すことも可能です。詳細は ネイティブ プラグイン インタフェース ページを確認してください。
非常にシンプルな例:
 float FooPluginFunction () { return 5.0F; } 
using UnityEngine;
using System.Runtime.InteropServices;
class SomeScript : MonoBehaviour {
   #if UNITY_IPHONE || UNITY_XBOX360
   
   // On iOS and Xbox 360 plugins are statically linked into
   // the executable, so we have to use __Internal as the
   // library name.
   [DllImport ("__Internal")]
   #else
   // Other platforms load plugins dynamically, so pass the name
   // of the plugin's dynamic library.
   [DllImport ("PluginName")]
    
   #endif
   private static extern float FooPluginFunction ();
   void Awake () {
      // Calls the FooPluginFunction inside the plugin
      // And prints 5 to the console
      print (FooPluginFunction ());
   }
}
Javascriptを使用しているときDLLの名前(DLLName)がpluginである場合,あるいは “__Internal” で静的にリンクしたネイティブコードを書いている場合は,次の構文を書く必要がある事に注意してください。
@DllImport (DLLName)
static private function FooPluginFunction () : float {};
一般的には,プラグインは,ターゲットプラットフォーム上でネイティブコードコンパイラを使って構築されています。プラグインの関数はC言語に基づいたコール·インタフェース(C-based call interface)を使用するので,C++やObjective-Cを使用した場合はネーム・マングル(name mangling)の問題を避けなければなりません。
詳細と例については,次のページを参照してください:-