プリプロセッサシンボルを使って、ゲームやアプリケーションのビルド (エディターの再生モードを含む) にアセンブリをコンパイルして加えるかどうかを制御することができます。Assembly Definition オプションの Define Constraints リストで、アセンブリを使用するために定義しなければならないシンボルを指定することができます。
Assembly Definition を選択すると、アセンブリのプロパティが Inspector に表示されます。
Define Constraints セクションで、+ ボタンをクリックすると、制限のリストに新しいシンボルが追加されます。
シンボル名を入力します。
名前の前に感嘆符を付けることで、シンボルを否定することができます。例えば、!UNITY_WEBGL という制約は、UNITY_WEBGL が定義されていない場合にアセンブリを加えます。
Apply をクリックします。
以下の記号を制約条件として使用できます。
スクリプトで定義されたシンボルは、定義する際に制約が満たされているかどうかを考慮しません。
詳細は Define Constraints を参照してください。
プロジェクトが特定の Unity またはパッケージのバージョンを使用しているかどうかに応じて、アセンブリに異なるコードをコンパイルする必要がある場合には、Version Defines リストにエントリーを追加できます。このリストには、シンボルを定義する際のルールが記載されています。バージョン番号の定義には、特定のバージョンまたはバージョンの範囲を確認する論理式を指定できます。
シンボルを条件付きで定義するには、以下のようにします。
Assembly Definition アセットを選択すると、アセンブリのプロパティが Inspector に表示されます。
Version Defines セクションで、+ ボタンをクリックしてリストに新しいエントリーを追加します。
プロパティを設定します。
Expression outcome は、その式がどのバージョンを評価するかを示しています。結果が Invalid と表示される場合は、式構文が正しくありません。
以下の例では、プロジェクトが Timeline 1.3 を使用しているかを確かめるシンボル USE_TIMELINE_1_3 を定義し、プロジェクトが Unity 2021.2.0a7 以降で開かれているかを確かめる USE_NEW_APIS を定義します。
Apply をクリックします。
Assembly Definition で定義されたシンボルは、その定義のために作成されたアセンブリ内のスクリプトに対してのみ適用されます。
Version Defines リストを使って定義したシンボルは、Define Constraints として使用できます。そのため、プロジェクトに任意のパッケージの特定のバージョンもインストールされている場合にのみアセンブリを使用するよう指定できます。
式を使って、正確なバージョンまたはバージョンの範囲を指定することができます。Version Define 式は、数学的な範囲表記を使用しています。
角かっこ “[]” は、終点を含む範囲を示します。
[1.3,3.4.1]は1.3.0 <= x <= 3.4.1を評価します。
かっこ () は、終点を除いた範囲であることを示します。
(1.3.0,3.4)は1.3.0 < x < 3.4.0を評価します。
1 つの式の中で、両方の範囲タイプを混在させることができます。
[1.1,3.4)は1.1.0 <= x < 3.4.0を評価します。
(0.2.4,5.6.2-preview.2]は0.2.4 < x <= 5.6.2.-preview.2を評価します。
正確なバージョンを指定するには、角かっこに単一のバージョン指定子を示します。
[2.4.5]はx = 2.4.5を評価します。
ショートカットとして、範囲かっこを付けずに単一のバージョンを入力すると、その式はそのバージョン以降を含むことを示します。
2.1.0-preview.7はx >= 2.1.0-preview.7を評価します。
__注意__式にはスペースは許可されません。ワイルドカード文字はサポートされません。
Unity の現在のバージョン (および Assembly Definitions をサポートするすべてのバージョン) では、バージョン指定子は MAJOR.MINOR.REVISION の 3 つの部分で構成されています。例えば、 2017.4.25f1、2018.4.29f1、2019.4.7f1 などです。
2022.x.z 以前ではリリース年を表す 4 桁の数字、または Unity 6 (6000.x.z) 以降ではメジャー技術バージョンです。リリースタイプ指定子は以下のように比較されます。
a < b < f = c < p < x
アルファリリースはベータリリースよりも前、ベータリリースは通常の (f) リリースや中国 (c) リリースより前とみなされます。パッチリリースは同じ改訂番号を持つ通常のリリースまたは中国のリリースよりも常に後であり、実験的リリースはすべてのリリースタイプの後になります。実験的リリースでは、最後の増分番号は使用しないため注意してください。
Unity のバージョン番号には、REVISION コンポーネントの後に 2019.3.0f11-Sunflower などのサフィックスを付けることができます。サフィックスは、バージョンを比較する目的では無視されます。
例えば、以下の式には、2017 または 2018 バージョンの Unity が含まれますが、2019 以降のバージョンは含まれません。
[2017,2019)
パッケージとモジュールのバージョン指定子は、セマンティックバージョニング 形式に従って 4 つの部分に分かれています。MAJOR.MINOR.PATCH-LABEL です。最初の 3 つの部分は必ず数字ですが、ラベルは文字列です。プレビュー中の Unity パッケージは、文字列 preview または preview.n を使用します (n > 0)。パッケージのバージョン番号の詳細は、パッケージのバージョン管理 を参照してください。
例えば、以下の式は、3.2 から 6.1 までの MAJOR.MINOR バージョンを持つパッケージのすべてのバージョンを含みます。
[3.2,6.1]