ファイル サイズの削減
デスクトップ プラットフォームのプラグインをビルド

プラグイン (Pro/モバイル専用)

UnityはC,C++,Objective-C等で記述されたライブラリを Plugins でサポートしています。プラグインはゲームのコード(JavaScriptやC#,Booで記述されている)からライブラリの関数を呼び出すことができます。この機能はUnityをミドルウェアライブラリや既存のC/C++コードと統合することができます。

注意: デスクトッププラットフォームでは,プラグインはPro専用の機能です。またセキュリティ的な理由によりプラグインはWebplayerでは利用できません。

プラグインを使うためには,以下の2つの作業を行う必要があります。

  • C言語を基準とした言語で記述後コンパイルし,ライブラリに含める
  • ライブラリの関数を呼び出すC#スクリプトを記述する

プラグインは単純なC言語で書かれたインターフェースをC#や他のスクリプトに提示します。さらに,Unityでは特定の低レベルのレンダリングイベントが発生した時(例えばグラフィックデバイスを生成した時)にエクスポートした関数を呼び出すことも可能です。詳細は ネイティブ プラグイン インタフェース ページを確認してください。

非常にシンプルな例:

単純なCファイルプラグイン:

 float FooPluginFunction () { return 5.0F; } 

C#のスクリプトからプラグインを利用する:

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)の問題を避けなければなりません。

詳細と例については,次のページを参照してください:-

追加情報

ファイル サイズの削減
デスクトップ プラットフォームのプラグインをビルド