プラグイン (Pro/モバイル専用)
低レベル ネイティブ プラグイン インターフェース

デスクトップ プラットフォームのプラグインをビルド

このページはデスクトッププラットフォーム(Windows/MacOS X/Linux)の ネイティブ コード プラグイン について記述します。これらのプラグインはセキュリティ上の理由によりsWebplayerで無効になっていることに注意してください。

Mac OS X用のプラグインをビルドする

MacOSXでは plugins はバンドルとしてデプロイされます。バンドルプロジェクト (Bundle Project)はXcodeの File->NewProject… を選択し,Bundle -> Carbon/Cocoa Loadable Bundle (XCode 3の場合)または OS X -> Framework & Library -> Bundle (XCode 4の場合) を選択してください。

もしC++(.cpp)もしくはObjective-C(.mm)でプラグインを実装する場合,関数が Name Mangling の問題 を避けるため,C のリンク で宣言されていることを確認する必要があります。

extern "C" {
  float FooPluginFunction ();
}

Windows用のプラグインをビルドする

Windows用のプラグインはエクスポートされた関数を持つDLLファイルです。これは実質的に,どのような言語・開発環境でも作成できます。 Mac OSXと同様,ネーム・マングル(Name Mangling)の問題を回避するためには,任意のC++関数は C のリンクを宣言する必要があります。

Linux用のプラグインをビルドする

Linuxのプラグインは,エクスポートされた関数を持つ .so ファイルです。これらのライブラリも例によってCまたはC++で記述され,任意の言語で使用することができます。 また他のプラットフォームと同様に,任意のC++関数はCリンケージを宣言する必要があります。

32-bitと64-bitのライブラリ

32-bit様 および/または 64-bit用 プラグインを必要とする問題は,プラットフォームにより異なる形でハンドリングされています。

Windows および Linux

Windows および Linux では,プラグインは手動で管理する(すなわち,64-bit プレイヤーをビルドする前に Assets/Plugins フォルダに64-bitライブラリをコピーする必要があり,32-bit用プレイヤーをビルドする前に,32-bitライブラリを Assets/Plugins フォルダにコピーする必要があります),または32-bit用のプラグインを Assets/Plugins/x86 に配置して,64-bit用のプラグインを Assets/Plugins/x86_64 に配置出来ます。デフォルトではエディターはアーキテクチャ特有のサブディレクトリを先に見て,もしディレクトリが存在しない場合,プラグインをルートの Assets/Plugins フォルダから代わりにコピーします。

ユニバーサル Linux ビルドについては,アーキテクチャ特有のサブディレクトリを使用する必要があることに留意して下さい(ユニバーサル Linux ビルドをビルドするとき,エディターはルートの) Assets/Plugins からプラグインを一切コピーしません。

Mac OS X

Mac OS Xについては,プラグインを32-bit,64-bit両方のアーキテクチャを保有するユニバーサルバイナリとしてビルドすべきです。

C#からプラグインを使用する

一度ビルドしたバンドルはUnityプロジェクトの Assets->Plugins フォルダに配置する必要があります。UnityはC#スクリプトに関数を定義したときの名前で探します。:-

[DllImport ("PluginName")]
private static extern float FooPluginFunction ();

なお, PluginName がライブラリのプレフィックス(prefix)やファイル拡張子を含める必要は無いことに注意してください。例えば,プラグインファイルの実際の名前は,Windowsの場合はPluginName.dll,Linuxの場合はlibPluginName.soです。 プラグインでコードを変えるときはいつでも,あなたがプロジェクトでスクリプトを再コンパイルする必要があることに注意してください,でなければ,プラグインには最新のコンパイルされたコードがありません。

配置(Deployment)

クロスプラットフォームなプラグインは,Pluginsフォルダに.bundle(Mac用),.dll(windows用),.so(Linux用)のファイルを含めなければなりません。 それ以上の作業はありません。Unityは自動的にターゲットプラットフォームのためのプラグインを抽出し,プレイヤーに含めます。

サンプル

単純なプラグイン

このプラグインプロジェクトはいくつかの非常に単純な機能を提供します(数字のプリント,文章のプリント,小数の足し算,整数の足し算)。 このプロジェクトは ここ で見つけることができます 。また,このプロジェクトにはWindows用,Mac用,Linux用のプロジェクトが含まれています。

C++のコードからレンダリング

マルチスレッドレンダリングプラグインのマルチプラットフォーム動作例は, Native Plugin Interface ページで見つけることができます。

プラグイン (Pro/モバイル専用)
低レベル ネイティブ プラグイン インターフェース