このページはデスクトッププラットフォーム(Windows/MacOS X/Linux)の ネイティブ コード プラグイン について記述します。これらのプラグインはセキュリティ上の理由によりsWebplayerで無効になっていることに注意してください。
MacOSXでは plugins はバンドルとしてデプロイされます。バンドルプロジェクト (Bundle Project)はXcodeの を選択し, -> (XCode 3の場合)または -> -> (XCode 4の場合) を選択してください。
もしC++(.cpp)もしくはObjective-C(.mm)でプラグインを実装する場合,関数が Name Mangling の問題 を避けるため,C のリンク で宣言されていることを確認する必要があります。
extern "C" {
float FooPluginFunction ();
}
Windows用のプラグインはエクスポートされた関数を持つDLLファイルです。これは実質的に,どのような言語・開発環境でも作成できます。 Mac OSXと同様,ネーム・マングル(Name Mangling)の問題を回避するためには,任意のC++関数は C のリンクを宣言する必要があります。
Linuxのプラグインは,エクスポートされた関数を持つ .so
ファイルです。これらのライブラリも例によってCまたはC++で記述され,任意の言語で使用することができます。
また他のプラットフォームと同様に,任意のC++関数はCリンケージを宣言する必要があります。
32-bit様 および/または 64-bit用 プラグインを必要とする問題は,プラットフォームにより異なる形でハンドリングされています。
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については,プラグインを32-bit,64-bit両方のアーキテクチャを保有するユニバーサルバイナリとしてビルドすべきです。
一度ビルドしたバンドルはUnityプロジェクトの
フォルダに配置する必要があります。UnityはC#スクリプトに関数を定義したときの名前で探します。:-[DllImport ("PluginName")]
private static extern float FooPluginFunction ();
なお, PluginName がライブラリのプレフィックス(prefix)やファイル拡張子を含める必要は無いことに注意してください。例えば,プラグインファイルの実際の名前は,Windowsの場合はPluginName.dll,Linuxの場合はlibPluginName.soです。 プラグインでコードを変えるときはいつでも,あなたがプロジェクトでスクリプトを再コンパイルする必要があることに注意してください,でなければ,プラグインには最新のコンパイルされたコードがありません。
クロスプラットフォームなプラグインは,Pluginsフォルダに.bundle(Mac用),.dll(windows用),.so(Linux用)のファイルを含めなければなりません。 それ以上の作業はありません。Unityは自動的にターゲットプラットフォームのためのプラグインを抽出し,プレイヤーに含めます。
このプラグインプロジェクトはいくつかの非常に単純な機能を提供します(数字のプリント,文章のプリント,小数の足し算,整数の足し算)。 このプロジェクトは ここ で見つけることができます 。また,このプロジェクトにはWindows用,Mac用,Linux用のプロジェクトが含まれています。
マルチスレッドレンダリングプラグインのマルチプラットフォーム動作例は, Native Plugin Interface ページで見つけることができます。