Version: 2021.3
言語: 日本語
アセンブリの定義
Assembly Definition Reference のプロパティ

Assembly Definition のプロパティ

Assembly Definition (アセンブリ定義) アセットをクリックして、 Inspector ウィンドウで アセンブリのプロパティを設定します。

Assembly Definition プロパティは以下のセクションに分かれています。

Name と General

プロパティ 説明
Name アセンブリの名前 (ファイル拡張子なし)。アセンブリの名前は、プロジェクト全体で一意でなければなりません。特に複数のプロジェクトでアセンブリを使用する場合は、名前の競合の可能性を減らすために、逆引き DNS 命名スタイルを使用することを検討してください。

ノート: Unity は、Assembly Definition アセットに割り当てた名前を Name フィールドのデフォルト値として使用しますが、必要に応じて名前を変更できます。ただし、GUID ではなく名前でAssembly Definition を参照する場合、名前を変更すると参照が壊れます。
Allow ‘unsafe’ Code アセンブリ内のスクリプトで C# の ‘unsafe’ キーワードを使用している場合は、Allow ‘unsafe’ Code オプションを有効にします。この設定を有効にすると、Unity はアセンブリをコンパイルする際に C# コンパイラーに /unsafe オプションを渡します。
Auto Referenced 定義済みのアセンブリが、このプロジェクトのアセンブリを参照するかどうかを指定します。Auto Reference オプションを無効にすると、Unity はコンパイル時にアセンブリを自動的には参照しません。これは、ビルドに含まれるかどうかには影響しません。
No Engine References これを有効にすると、Unity はアセンブリをコンパイルする際に、UnityEditor や UnityEngine への参照を加えません。
Override References これを有効にすると、このアセンブリが依存するプリコンパイルされたアセンブリを手動で指定できます。Override References を有効にすると、Inspector に Assembly References セクションが表示され、ここで参照を指定できます。

プリコンパイルされたアセンブリは、Unity プロジェクトの外でコンパイルされたライブラリです。デフォルトでは、プロジェクトで定義したアセンブリは、プロジェクトに追加したすべてのプリコンパイルされたアセンブリを参照します。これは、定義済みのアセンブリがすべてのプリコンパイルされたアセンブリを参照するのと同じです。Override References を有効にすると、このアセンブリは Assembly References で加えたプリコンパイルされたアセンブリのみを参照します。

ノート: プロジェクトのアセンブリが自動的にプリコンパイルされたアセンブリを参照するのを避けるには、そのアセンブリの Auto Referenced オプションを無効にします。詳細は、Plugin Inspector を参照してください。
Root Namespace このアセンブリ定義の スクリプト のデフォルト名前空間です。Rider または Visual Studio をコードエディターとして使用する場合、このアセンブリ定義で作成する新しいスクリプトにはすべて、この名前空間が加えられます。

詳しくは、アセンブリ定義アセットの作成 を参照してください。

Define Constraints

Define Constraints は、Unity がアセンブリをコンパイルまたは参照するために定義しなければならないコンパイラーの #define ディレクティブを指定します。

Unity は、Define Constraints (制約定義) がすべて満たされている場合にのみ、Project アセンブリをコンパイルし参照します。Constraint (制約) は C# の #if プリプロセッサーディレクティブのように動作しますが、スクリプトレベルではなくアセンブリレベルで動作します。制約を満たすためには、 Define Constraints 設定ですべてのシンボルを定義する必要があります。

シンボルが未定義であることを指定するには、そのシンボルの前に否定の ! (エクスクラメーション) 記号を付けます。例えば、以下のようなシンボルを Define Constraints に指定した場合です。

  • !ENABLE_IL2CPP
  • UNITY_2018_3_OR_NEWER

この制約は、シンボル ENABLE_IL2CPP が定義されておらず、シンボル UNITY_2018_3_OR_NEWER が定義されている場合に満たされます。結果的に、Unity は、Unity 2018.3 以降の IL2CPP 以外のスクリプティングランタイムでのみ、このアセンブリをコンパイルして参照します。

|| (OR) 演算子を使って、制約が満たされるためには少なくとも 1 つの制約が存在しなければならないことを指定できます。例えば、以下のようになります。

  • UNITY_IOS || UNITY_EDITOR_OSX
  • UNITY_2019_3_OR_NEWER
  • !UNITY_ANDROID

UNITY_IOS か UNITY_EDITOR_OSX のいずれかと、UNITY_2019_3_OR_NEWER が定義され、UNITY_ANDROID が定義されていない場合に制約条件が満たされます。それぞれの行は、その中の制約条件の間で論理的な AND を実行することに類似しています。上の例は以下に相当します。

(UNITY_IOS OR UNITY_EDITOR_OSX) AND (UNITY_2019_3_OR_NEWER) AND (NOT UNITY_ANDROID)

Unity のビルトインの #define ディレクティブ、グローバルコンパイラーレスポンス (.rsp) ファイルで定義されているシンボル、プロジェクトの Scripting Define Symbols Player 設定で定義されているシンボルのいずれかを使用できます。ビルトインのシンボルのリストなど、詳細は プラットフォーム依存のコンパイル を参照してください。

ノート: Scripting Define Symbols の設定は、プラットフォーム固有のものです。この設定を使用して、Unity がアセンブリを使用するかどうかを定義する場合は、関連するすべてのプラットフォームで必要なシンボルを定義するようにしてください。

詳しくは、条件付きでアセンブリを加える を参照してください。

無効な/互換性のない制約

Unity は、各制約に、現在定義されている設定に基づくインジケータを付けています。例えば、次の 3 つの制約は、最初のシンボルは現在定義されているが、他の 2 つは定義されていないことを示しています。全体の制約が満たされるためには、個々の制約が true である必要があるので、エディターは Define Constraints セクションを現在、互換性なし、または無効とマークします。

無効または互換性のない制約にフラグが立ちます。
無効または互換性のない制約にフラグが立ちます。

この例の制約を満たすために、2 つめの制約の Scripting BackendIL2CPP に変更し (Player Settings で)、無効な文字を 3 つめの制約から取り除くことができます。ただし、多くの場合、重要なのはプロジェクトをビルドするときに制約がどのように評価されるかであり、Unity エディターで制約がどのように表示されるかではありません (例えば、IL2CPP バックエンドを使用するビルドにのみ加え、Mono バックエンドを使用する他のビルドには加えたくないアセンブリがある場合など)。

Assembly Definition References

プロパティ 説明
Assembly Definition References Assembly Definition アセットを使って作成した他のアセンブリへの参照を指定します。Unity はこれらの参照を使用してアセンブリをコンパイルし、アセンブリ間の 依存関係 も定義します。
Use GUIDs この設定は、Unity が他の Assembly Definition アセットへの参照をどのようにシリアル化するかを制御します。このプロパティを有効にすると、Unity は参照を Assembly Definition 名ではなく、アセットの GUID として保存します。名前ではなく GUID を使用することは、Assembly Definition アセットの名前を変更しても、それを参照する他の Assembly Definition ファイルを更新する必要がないという意味で効率的です。

詳しくは、Assembly Definition アセットの作成 を参照してください。

Assembly References

Assembly References セクションは、Override References プロパティ (General セクション内) を有効にした場合にのみ表示されます。このエリアでは、このアセンブリが依存しているプリコンパイルされたアセンブリへの参照すべてを指定できます。

詳しくは、プリコンパイルされたプラグインアセンブリを参照 を参照してください。

Platforms

アセンブリのプラットフォーム互換性を設定します。Unity は、含まれる (または除外されない) プラットフォーム上でのみ、このアセンブリをコンパイルまたは参照します。

詳しくは、プラットフォーム固有のアセンブリの作成 を参照してください。

Version Defines

プロジェクト内のパッケージやモジュールのバージョンに応じて、定義するシンボルを指定します。

プロパティ 説明
Resource パッケージまたはモジュール
Define 適用可能なバージョンのリソースが、この Unity プロジェクトにも存在する場合に定義するシンボルです。
Expression バージョンまたはバージョンの範囲を定義する式。バージョン定義式 を参照してください。
Expression outcome 論理的なステートメントとして評価された式で、“x” は確認されたバージョンです。式の結果が Invalid の場合は、式が不正です。

詳しくは、プロジェクトパッケージに基づくシンボルの定義 を参照してください。

アセンブリの定義
Assembly Definition Reference のプロパティ