可以使用预处理器符号控制是否对程序集进行编译并包含在应用程序的构建中(包括编辑器中的运行模式)。可以在程序集定义选项中通过 Define Constraints 列表指定必须为要使用的程序集定义的符号:
选择程序集的程序集定义以在__检视面板__中查看其属性。
在 Define Constraints 部分中,单击 + 按钮以将新符号添加到约束列表中。
输入符号名称。
可以通过在名称前放置感叹号来“否定”符号。例如,约束 !UNITY_WEBGL 会在未定义 UNITY_WEBGL 时包含程序集。
单击__应用 (Apply)__。
可以使用以下符号作为约束:
在确定是否满足约束时,不会考虑脚本中定义的符号。
有关其他信息,请参阅 Define Constraints。
如果需要根据项目是使用 Unity 还是包的特定版本,在程序集中编译不同代码,则可以向 Version Defines 列表添加条目。此列表为何时定义符号指定规则。对于版本号,可以指定计算结果为特定版本或版本范围的逻辑表达式。
要有条件地定义符号,请执行以下操作:
选择程序集的程序集定义资源以在__检视面板__中查看其属性。
在 Version Defines 部分中,单击 + 按钮以将条目添加到列表中。
设置属性:
Expression outcome 显示表达式计算得出的版本。如果结果显示 __Invalid__,则表达式语法不正确。
以下示例定义符号 USE_TIMELINE_1_3(如果项目使用时间轴 1.3),并定义 USE_NEW_APIS(如果项目在 Unity 2021.2.0a7 或更高版本中打开):
单击__应用 (Apply)__。
在程序集定义中定义的符号仅在为该定义创建的程序集中的脚本范围内。
请注意,可以使用通过 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,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 的当前版本(以及支持程序集定义的所有版本)使用包含三部分的版本指示符:MAJOR.MINOR.REvision,例如 2017.4.25f1、2018.4.29f1 和 2019.4.7f1。
2022.x.z 及更低版本表示发布年份,对于 Unity 6 (6000.x.z) 及更高版本表示主要技术版本。版本类型指示符比较如下:
a < b < f = c < p < x
换句话说,alpha 版本被视为早于 beta 版本,而 beta 版本早于正式公开发布版本 (f) 或中国发行版本 (c)。补丁版本始终晚于具有相同修订版号的正式公开发布版本或中国发行版本,而实验性版本则晚于任何其他版本类型。请注意,实验性版本不会在末尾使用递增数字。
Unity 版本号允许在 REVISION 组件之后有后缀,例如 2019.3.0f11-Sunflower。为了比较版本,会忽略任何后缀。
例如,以下表达式包括 Unity 的任何 2017 或 2018 版本,但不包括 2019 或更高版本:
[2017,2019)
包和模块版本指示符有四个部分,遵循语义版本控制格式:MAJOR.MINOR.PATCH-LABEL。前三个部分全为数字,但标签是字符串。Unity 包预览版使用字符串、preview 或 preview.n,其中 n > 0。有关包版本号的更多信息,请参阅包版本控制。
例如,以下表达式包含 MAJOR.MINOR 版本在 3.2 到 6.1(含边界版本)之间的包的所有版本:
[3.2,6.1]