プラグインインスペクターを使用して、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