デスクトッププラットフォーム用のプラグインは、C、C++、Objective C で書かれたネイティブコードのライブラリです。ここでは、macOS、Windows、Linux のためのプラグインを説明します。詳細については、ネイティブプラグイン に関するドキュメントを参照してください。
macOS プラグインはバンドルとして展開することができますが、IL2CPP スクリプティングバックエンド (ルーズ C++ ファイル) を使用する場合は、[DllImport("__Internal")]
構文で呼び出すことができます。緩い C++ プラグインの詳細については、macOS Player - IL2CPP のための C++ ソースコードプラグイン のドキュメントを参照してください。
Xcode でバンドルプロジェクトを作成するには、以下を行います。
Xcode での作業の詳細については、Apple の Xcodeに関するドキュメント を参照してください。
.cpp
) または Objective-C (.mm
) を使用してプラグインを実装する場合、名前マングリングを避けるために C リンケージで関数を宣言してください。extern "C"
{
float ExamplePluginFunction ();
}
Windows のプラグインは、エクスポートされた関数を持つ .dll
ファイル、または、IL2CPP を使用している場合は、ルーズ C++ ファイルです。.dll
ファイルを作成できる大抵の言語や開発環境でプラグインを作成できます。名前マングリングの問題を避けるには、C リンケージを持つ C++ 関数を宣言する必要があります。
Linux 上のプラグインは、エクスポートされた関数をもつ .so
ファイルです。これらのライブラリは、通常 C または C++ で書かれていますが、どの言語でも使用できます。他のプラットフォームと同様に、名前マングリングの問題を避けるために、C リンケージを持つ C++ 関数を宣言する必要があります。
Linux用ネイティブプラグインをビルドする際、ビルドされたライブラリが他のネイティブプラグインに依存関係がある場合、コンパイル時にそのライブラリの rpath
を指定する必要があります。
リンカーフラグ -Wl, -rpath=$ORIGIN
を加えて、実行時の検索パスを指定します。このリンカーフラグは、システムの検索パスを検索する以外に、ライブラリの現在のディレクトリで依存関係を検索するようにローダーに指示します。他のリンカーフラグを -Wl, -rpath=$ORIGIN
と一緒に加えることもできますが、Unity はそれらを制御しません。例えば、/usr/bin/g++ -o binary.c.o -Wl,-rpath=$ORIGIN
のように使用します。
あるいは、LD_LIBRARY_PATH=dependency wo path
を環境に設定することで、ローダーにそのパスで依存関係を検索するように指示することもできます。Linux では、現在のディレクトリから依存関係を自動的に検索することはありません。誤ったパスは、Unity エディターでライブラリが見つからないエラーを引き起こすため、依存関係の正しい検索パスを設定するようにしてください。
Unity では、Plugin Inspector がプラグインを管理します。Plugin Inspector にアクセスするには、Project ウィンドウ でプラグインファイルを選択します。スタンドアロンプラットフォームの場合は、ライブラリが対応している CPU アーキテクチャを選択します。クロスプラットフォームのプラグインの場合は、.bundle
ファイル(macOS の場合)、.dll
ファイル (Windows の場合)、.so
ファイル (Linux の場合) を含む必要があります。Unity は、ターゲットプラットフォームに適したプラグインを自動的に選択し、プレイヤーに加えます。詳細については、Plugin Inspector を参照してください。
ビルドしたプラグインを Assets フォルダーまたは Unity プロジェクトの適切なアーキテクチャ固有のサブディレクトリに配置します。C# スクリプトから呼び出すと、Unity は名前でそれを見つけます。例: [DllImport ("PluginName")] private static extern float ExamplePluginFunction ();
ノート: PluginName
がライブラリのプレフィックスやファイル拡張子を含まないように注意してください。例えば、プラグインファイルの実際の名前は、PluginName.dll (Windows の場合) や libPluginName.so (Linux の場合) にします。
これらのプロジェクトをダウンロードして使用することで、Unity でのプラグイン実装の方法を学ぶことができます。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.