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

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

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

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

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

追加情報

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