プラグインインスペクターを使用して、Unity がプラグインファイルをロードし参照する条件を指定します。プラグインに対して、プラットフォームに特化したさまざまな設定も指定することができます。
プラグインインスペクターを表示するには、Project ウィンドウでプラグインファイルを選択します。
Auto Reference 設定は、プロジェクトの他のアセンブリやアセンブリ定義が、プラグインファイルをどのように参照するかを制御します。
Auto Reference が選択されていると (デフォルト)、事前定義されたすべてのアセンブリとアセンブリ定義は自動的にプラグインファイルを参照します。プラグインへの参照を明示的に宣言したい場合は、Auto Reference のチェックを外します。
Assembly Definition Inspector ウィンドウを使用して、アセンブリ定義のプラグインファイルへの参照を宣言できます。詳細は、スクリプトのコンパイルとアセンブリ定義ファイル を参照してください。
注意 Auto Reference のチェックを外すと、Unity がプロジェクト用に作成した事前定義されたアセンブリからプラグインを参照することができません。これらの事前定義されたアセンブリには、アセンブリ定義ファイルを使用して別のアセンブリに割り当てられていないプロジェクト内のすべてのスクリプトが含まれます。アセンブリ定義ファイルで作成され、アセンブリに含まれるコードのみ、Auto Reference プロパティがチェックされていないプラグインのクラス、関数、その他のリソースを参照できます。
Auto Reference を false に設定すると、そのプラグインへの参照をすべて明示的に宣言することによって、プラグインの参照が可能なスコープを制限できます。例えば、プロジェクトの 1 組のスクリプトのみがプラグインを使用する場合、それらのスクリプト用のアセンブリ定義ファイルを作成し、そのプラグインへの明示的な参照を作成します。プロジェクト内でプラグインが自動的に参照されなくなるため、プロジェクトの他のスクリプトで誤ってプラグインを使用することはありません。(複数のアセンブリがそのプラグインを使用できますが、すべてのアセンブリは依存関係を明示的に宣言する必要があります。) また、プラグインを変更する場合は、プロジェクト全体ではなく、依存するアセンブリのみを再コンパイルする必要があります。
プラグインへの明示的な参照を使用して、アセットパッケージで使用されるプラグインが、パッケージのインポート先のプロジェクトの他のコードと競合するのを防ぐこともできます。
Select platforms for plugin (プラグインのプラットフォームの選択) を使用して、プラグインファイルが互換性があり使用できるプラットフォームを定義します。プラットフォームのリストにはエディター (再生モード用と編集時に実行できるすべてのスクリプト用)、スタンドアロン、そして、Android、iOS、WebGL などの Unity ビルドサポートをインストールしたプラットフォームが含まれます。
Any Platform をチェックし、任意で個々のプラットフォームを除外できます。または、Any Platform のチェックを外し、任意で、個々のプラットフォームを加えることもできます。
プラットフォームを選択したら、CPU タイプや特定の OS などの追加オプションを Platform settings (プラットフォーム設定) セクションで指定できます。Inspector ウィンドウのこのセクションには、選択した各プラットフォームのタブがあります。プラットフォームには設定がまったくないものもあれば、CPU や OS の選択など、少数のものもあります。
可能な場合は、インスペクターは特定のプラットフォームのプラグインタイプに適用可能な設定のみを表示します。例えば、拡張子が .dll のネイティブプラグインファイルの場合、インスペクターは Windows にのみ適用できるオプションのみを表示します。なぜなら、そのようなプラグインは Windows でのみ使用できるからです。
ノート ネイティブプラグインはアンロードできません。プラグインがすでにエディターにロードされている場合、同じエディターセッションでそのプラグインの設定を変更した後も、プラグインはロードされたままになります。プラグインをアンロードするには、Unity を再起動する必要があります。
エディターの Platform settings (プラットフォーム設定) を使用して、プラグインに互換性のある CPU アーキテクチャーとオペレーティングシステムを指定します。
ほとんどのマネージプラグインはどの CPU と OS とも互換性があります。しかし、ネイティブプラグインは通常、1 つの OS のみと互換性があり、コンパイルされた方法に応じて、1 つの CPU アーキテクチャと互換性があります。
例えば、CPU X86 を選択すると、Unity は、古い 32 ビットバージョンのエディターを実行するときにプラグインをロードしますが、64 ビットバージョンを実行するときにはロードしません。
同様に、OS Windows を選択すると、Unity は、Windows システムのエディターを実行するときにプラグインをロードしますが、OS X や Linux システムのバージョンを実行するときにはロードしません。
スタンドアロンプラットフォーム、Windows、OS X、Linux では、ライブラリに互換性のある CPU アーキテクチャを選択できます。マネージライブラリは通常、特定のシステム API にアクセスしない限り、どの OS やアーキテクチャとも互換性があります。ネイティブライブラリは、1 つの OS にのみ互換性がありますが、32 ビット、64 ビット、または両方の CPU アーキテクチャと互換性があります。
スタンドアロンプラットフォームの Player 設定 も参照してください。
ユニバーサルWindowsプラットフォームプラグインの設定は、それぞれのセクションでカバーされています。以下を参照してください。
Android と互換性があるプラグインファイルの場合は、CPU のアーキテクチャを選択します。選択したアーキテクチャは、ライブラリがコンパイルされたアーキテクチャと一致する必要があります。Unity は、正しい設定を選択したかどうかを検証しません。
iOS と tvOS の設定では、プラグインが依存している iOS フレームワーク (存在する場合は) を特定することができます。
動的にロードされるライブラリ、それが含まれるバンドルやフレームワーク、ランタイムにロードする必要があるアセットやリソースの場合は、Add to Embedded Binaries にチェックを入れます。このオプションを有効にすると、Unity は Xcode プロジェクトのオプションを設定して、プラグインファイルを最終的なアプリケーションパッケージにコピーします。
ビルドの一部としてコンパイルする必要があるプラグインのソースコードファイルでは、Compile Flags フィールドでコンパイル時に必要なフラグを指定できます。
Define Constraints 設定を使用して、プラグインファイルを使用するために定義する (または定義しない) シンボルを指定します。
すべての Define Constraints (制約の定義) が満たされている場合のみ、Unity はプラグインをロードして参照します。制約は C# の #if
プリプロセッサーディレクティブのように機能しますが、スクリプトレベルではなくアセンブリレベルで動作します。制約を満たすためには、Define Constraints 設定のすべてのシンボルを定義する必要があります。また、否定の意味を持つ !
シンボルを前に置くことで否定の定義を行うこともできます。例えば、Define Constraint として以下のようにシンボルを指定できます。
制約は、シンボル ENABLE_IL2CPP
を 否定する定義 がされ、シンボル UNITY_2018_3_OR_NEWER
を 定義 するときに満たされます。言い換えると、このアセンブリは、Unity 2018.3 以降の IL2CPP 以外のスクリプティングランタイムでのみロードされ、参照されます。
Unity のビルトインの定義シンボル、または、プロジェクトの Scripting Define Symbols Player 設定で定義されているシンボルを使用できます。ビルトインのシンボルのリストなど、詳細は プラットフォーム依存コンパイル を参照してください。 Scripting Define Symbols の設定はプラットフォームごとに異なります。すべての関連するプラットフォームで必要なシンボルを定義するようにしてください。
Unity は、Assets フォルダー内のファイルがプラグインかどうかを拡張子によって検出します。以下の拡張子を持つファイルをプラグインとして扱います。
また、Unity は特定のフォルダーをバンドルプラグインとして扱います。Unity はそのようなフォルダー内で追加のプラグインファイルを探しません。そのため、フォルダー内のすべてで 1 つのプラグインとみなされます。Unity はフォルダーが以下のいずれかの拡張子を持つ場合は、バンドルプラグインかどうかを検出します。
最後に、Unity は、Assets/Plugins/Android/ に一致する親パスを持つフォルダーを Android Library プラグインフォルダーとして扱います。そのようなフォルダーは、.plugin、.bundle、.framework という特別な拡張子を持つフォルダーと同様に処理されます。
Unity は、プラグインが置かれたフォルダーに応じて、プラグインファイルのインポート設定のデフォルトを設定します。
フォルダー | デフォルト設定 |
---|---|
Assets/../Editor | プラグインはエディターでのみ互換性があると判断され、プラットフォームへとビルドした際には使用されません。 |
Assets/../Editor/(x86 、x86_64、x64) | プラグインはエディターでのみ互換性があると判断され、CPU に応じて使用するプラグインを割り当てます。 |
Assets/../Plugins/(x86_64、x64) | 64ビットのスタンドアロンのプラグインとして判断されます。 |
Assets/../Plugins/x86 | 32ビットのスタンドアロンのプラグインとして判断されます。 |
Assets/Plugins/Android/(x86、armeabi、armeabi-v7a) | プラグインは Android でのみ互換性があると判断され、CPU ごとに分かれたフォルダーが存在する場合は、CPU に応じて使用するプラグインを割り当てます。 |
Assets/Plugins/iOS | プラグインは iOS でのみ互換性があると判断されます。 |
Assets/Plugins/WSA/(x86、ARM) | プラグインはユニバーサル Windows プラットフォームのみと互換性を持つように設定されます。サブフォルダーに CPU がある場合は、CPU の値も同様に設定されます。WSA の代わりに Metro が使用されます。 |
Assets/Plugins/WSA/(SDK80 、SDK81、PhoneSDK81) | 上記と同じで SDK に応じて使用するプラグインを割り当てることができます。また CPU のサブフォルダーを追加することも可能です。互換性を持たせるために、SDK81 は Win81 と同じで、PhoneSDK81 は WindowsPhone81 と同じ意味になります。 |
Assets/Plugins/Tizen | プラグインは Tizen でのみ互換性があると判断されます。 |
Assets/Plugins/PS4 | プラグインは Playstation 4 でのみ互換性があると判断されます。 |
2018–11–26
Samsung TV サポートを削除
Auto Reference と Define Constraints を 2018.3 で追加NewIn20183
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.