Assembly Definition (アセンブリ定義) アセットをクリックして、 Inspector ウィンドウで アセンブリのプロパティを設定します。
Assembly Definition プロパティは以下のセクションに分かれています。
| プロパティ | 説明: |
|---|---|
| 名前 | アセンブリの名前 (ファイル拡張子なし)。アセンブリの名前は、プロジェクト全体で一意でなければなりません。特に複数のプロジェクトでアセンブリを使用する場合は、名前の競合の可能性を減らすために、逆引き 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 プロジェクトの外でコンパイルされたライブラリです。デフォルトでは、プロジェクトで定義したアセンブリは、プロジェクトに追加したすべてのプリコンパイルされたアセンブリを参照します。これは、定義済みのアセンブリがすべてのプリコンパイルされたアセンブリを参照するのと同じです。 ノート: ノート: プロジェクトのアセンブリが自動的にプリコンパイルされたアセンブリを参照するのを避けるには、そのアセンブリの Auto Referenced オプションを無効にします。詳細は、Plugin Inspector を参照してください。 |
| Root Namespace | このアセンブリ定義のスクリプトのデフォルトの名前空間です。Rider または Visual Studio をコードエディターとして使用する場合、このアセンブリ定義で作成する新しいスクリプトにはすべて、この名前空間が加えられます。 |
詳しくは、アセンブリ定義アセットの作成を参照してください。
Define Constraints は、Unity がアセンブリをコンパイルまたは参照するために定義しなければならないコンパイラーの #define ディレクティブを指定します。
Unity は、Define Constraints (制約定義) がすべて満たされている場合にのみ、Project アセンブリをコンパイルし参照します。制約は、C# の #if プリプロセッサーディレクティブのように動作しますが、スクリプトレベルではなくアセンブリレベルで動作します。制約を満たすためには、 Define Constraints 設定ですべてのシンボルを定義する必要があります。
シンボルが未定義であることを指定するには、そのシンボルの前に否定の ! (エクスクラメーション) 記号を付けます。例えば、以下のようなシンボルを Define Constraints に指定した場合です。
!ENABLE_IL2CPPUNITY_2018_3_OR_NEWER制約は、シンボル ENABLE_IL2CPP が定義されておらず、シンボル UNITY_2018_3_OR_NEWER が定義されている場合に満たされます。結果的に、Unity は、Unity 2018.3 以降の IL2CPP 以外のスクリプティングランタイムでのみ、このアセンブリをコンパイルして参照します。
|| (OR) 演算子を使って、制約が満たされるためには少なくとも 1 つの制約が存在しなければならないことを指定できます。 例:
UNITY_IOS || UNITY_EDITOR_OSXUNITY_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 Backend を (Player Settings で) IL2CPP に変更し、無効な文字を 3 つめの制約から取り除くことができます。ただし、多くの場合、重要なのはプロジェクトをビルドするときに制約がどのように評価されるかであり、Unity エディターで制約がどのように表示されるかではありません (例えば、IL2CPP バックエンドを使用するビルドにのみ加え、Mono バックエンドを使用する他のビルドには加えたくないアセンブリがある場合など)。
| プロパティ | 説明: |
|---|---|
| Assembly Definition References | Assembly Definition アセットを使って作成した他のアセンブリへの参照を指定します。Unity はこれらの参照を使用してアセンブリをコンパイルし、アセンブリ間の依存関係も定義します。 |
| Use GUIDs | この設定は、Unity が他の Assembly Definition アセットへの参照をどのようにシリアル化するかを制御します。このプロパティを有効にすると、Unity は参照をアセンブリ定義名ではなく、アセットの GUID として保存します。名前ではなく GUID を使用することは、Assembly Definition アセットの名前を変更しても、それを参照する他の Assembly Definition ファイルを更新する必要がないという意味で効率的です。 |
詳しくは、アセンブリ定義アセットの作成を参照してください。
Assembly References セクションは、Override References プロパティ (General セクション内) を有効にした場合にのみ表示されます。このエリアでは、このアセンブリが依存しているプリコンパイルされたアセンブリへの参照すべてを指定できます。
詳しくは、プリコンパイルされたプラグインアセンブリの参照を参照してください。
アセンブリのプラットフォーム互換性を設定します。Unity は、含まれる (または除外されない) プラットフォーム上でのみ、このアセンブリをコンパイルまたは参照します。
詳しくは、プラットフォーム固有のアセンブリの作成を参照してください。
プロジェクト内のパッケージやモジュールのバージョンに応じて、定義するシンボルを指定します。
| プロパティ | 説明: |
|---|---|
| Resource | パッケージまたはモジュール |
| Define | 適用可能なバージョンのリソースが、この Unity プロジェクトにも存在する場合に定義するシンボルです。 |
| 式 | バージョンまたはバージョンの範囲を定義する式。詳細については、バージョン定義を参照してください。 |
| Expression outcome | 論理的なステートメントとして評価された式で、“x” は確認されたバージョンです。式の結果が Invalid の場合は、式の形式が不正です。 |
詳しくは、プロジェクトパッケージに基づくシンボルの定義を参照してください。