はじめに
今回はasmdef
のVersion Defines
について取り上げたいと思います。
概要
Version Defines
を用いることで特定のパッケージ(かつ特定バージョン)がある場合にのみシンボル定義を行うことができます。
If you need to compile different code in an assembly according to whether a project uses specific versions of Unity or of a package, you can add entries to the Version Defines list. This list specifies rules for when a symbol should be defined. For version numbers, you can specify a logical expression that evaluates to a specific version or a range of versions.
プロジェクトがUnityやパッケージの特定のバージョンを使用しているかどうかによって、アセンブリ内の異なるコードをコンパイルする必要がある場合、「バージョン定義」リストにエントリを追加することができます。このリストでは、シンボルを定義する際のルールを指定します。バージョン番号には、特定のバージョンまたはバージョンの範囲に評価される論理式を指定できます。
プロパティ | 説明 |
---|---|
Resource | パッケージまたはモジュール |
Define | 適用可能なバージョンのリソースが、この Unity プロジェクトにも存在する場合に定義するシンボルです。 |
Expression | バージョンまたはバージョンの範囲を定義する式。バージョン定義式 を参照してください。 |
Expression outcome | 論理的なステートメントとして評価された式で、“x” は確認されたバージョンです。式の結果が Invalid の場合は、式が不正です。 |
Assembly Definition のプロパティ - Unity マニュアル
公式ドキュメントにはこのように書かれていますが、もっと口語的?に書いてみると以下の通り。
プロパティ | 説明 |
---|---|
Resource | "指定したパッケージまたはモジュール"が存在する場合にDefine に記述したシンボル定義をする。 |
Define | Resource ・Expression を満たす場合にアセンブリ内に適応されるシンボル定義を行う。 |
Expression | 適応するバージョンまたはバージョンの範囲。 |
Expression outcome | Expression の結果を表示。 |
// サンプル public class Sample : MonoBehaviour { private void Start() { #if ENABLE_UNITASK Debug.Log("UniTaskが入っています。"); #else Debug.Log("UniTaskが入っていません。"); #endif } }
バージョン指定の式の書き方
以上
2.3.3
のようにバージョンを書きます。
以上・以下
[1.0.0,2.3.3]
のように[
(以上)と]
(以下)を使います。
より大きい・より小さい
(1.0.0,2.3.3)
のように(
(より大きい)と)
(より小さい)を使います。
等しい
[2.3.3]
のように書くと、等しいを表現できます。