Version: Unity 6.0 (6000.0)
语言 : 中文
程序集元数据和编译详细信息
程序集定义引用属性参考

程序集定义属性参考

单击程序集定义资源 (Assembly Definition Asset) 可以在检视面板窗口中设置程序集的属性。

程序集定义属性分为以下部分:

Name and General

属性: 描述:
Name 程序集的名称(不含文件扩展名)。程序集名称在整个项目中必须唯一。请考虑使用 reverse-DNS 命名样式降低名称冲突的风险,尤其是希望在多个项目中使用该程序集的情况下。

注意:Unity 会将分配给程序集定义资源的名称用作 Name 字段的默认值,但可以根据需要更改此名称。但是,如果通过名称而不是 GUID 来引用程序集定义,则更改名称将使引用无效。
Allow ‘unsafe’ Code 如果在程序集内的脚本中使用了 C# unsafe 关键字,请启用 Allow ‘unsafe’ Code 选项。启用此设置后,Unity 在编译程序集时会将 /unsafe 选项传递到 C# 编译器。
Auto Referenced 指定预定义的程序集是否应引用此项目程序集。禁用 Auto Reference 选项后,Unity 不会在编译过程中自动引用该程序集。这不会影响 Unity 是否将文件包含在构建中。
No Engine References 启用此属性后,Unity 在编译程序集时不会添加对 UnityEditor 或 UnityEngine 的引用。
Override References 启用 Override References 设置可以手动指定此程序集依赖哪些预编译的程序集。启用 Override References 后,检视面板会显示 Assembly References 部分,在此部分中可以指定引用。

预编译的程序集是在 Unity 项目外编译的库。默认情况下,在项目中定义的程序集将会引用添加到项目中的所有预编译程序集,这一点与预定义程序集引用所有预编译程序集的方式一致。启用 Override References 后,此程序集仅引用在 Assembly References 下添加的预编译程序集。

注意:为防止项目程序集自动引用预编译程序集,可以禁用 Auto Referenced 选项。请参阅 Plugin Inspector 了解更多信息。
Root Namespace 此程序集定义中脚本的默认命名空间。如果使用 [Rider] 或 [Visual Studio] 作为代码编辑器,它们会自动将此命名空间添加到此程序集定义中创建的任何新脚本中。

有关更多信息,请参阅创建程序集定义资源

Define Constraints

Define Constraints 中的约束条件指定编译器 #define 指令;必须定义这些指令,Unity 才能编译或引用程序集。

Unity 仅在已满足 Define Constraints 中的所有约束条件时才会编译和引用项目程序集。约束的作用与 C# 中的 #if 预处理器指令类似,但在程序集级别(而不是脚本级别)运行。必须定义 Define Constraints 设置中的所有符号,才能满足这些约束。

要表示必须取消定义某个符号,请在该符号前面添加否定 `!`(叹号)符号作为前缀。例如,如果在 Define Constraints 中指定以下符号:

  • !ENABLE_IL2CPP
  • UNITY_2018_3_OR_NEWER

当未定义符号 ENABLE_IL2CPP 且已定义符号 UNITY_2018_3_OR_NEWER 时,满足这些约束。因此,仅在 Unity 2018.3 或更高版本的非__ IL2CPP__种由 Unity 开发的脚本后端,可在为某些平台构建项目时替代 Mono。更多信息
See in Glossary
脚本运行时中,Unity 才编译和引用此程序集。

可以使用 || (OR) 运算符来指定必须存在至少一个约束才能满足这些约束条件。例如:

  • UNITY_IOS || UNITY_EDITOR_OSX
  • UNITY_2019_3_OR_NEWER
  • !UNITY_ANDROID

当已定义 UNITY_IOSUNITY_EDITOR_OSXUNITY_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 根据当前定义的设置使用指示符来标记每个约束(例如,以下三个约束表示第一个符号当前已定义,而另外两个符号未定义)。为了满足整体约束条件,每个单独的约束都必须为真,因此编辑器将整个 Define Constraints 部分标记为当前不兼容或无效。

已标记无效或不兼容的约束。
已标记无效或不兼容的约束。

为了满足此示例中的约束,可以将第二个约束的脚本后端更改为 IL2CPP(位于播放器设置中),并删除第三个约束中的无效字符。但是,通常重要的是构建项目时如何评估约束,而不是约束在 Unity 编辑器中的显示方式(例如,您可能有一个程序集,您只想将其包含在使用 IL2CPP 后端的构建中,而不包含在使用 Mono 后端的其他构建中)。

Assembly Definition References

属性: 描述:
Assembly Definition References 指定对使用程序集定义资源所创建的其他程序集的引用。Unity 使用这些引用来编译程序集,还定义程序集之间的依赖关系
Use GUIDs 此设置控制 Unity 如何序列化对其他程序集定义资源的引用。启用此属性后,Unity 将引用另存为资源的 GUID,而不是程序集定义的名称。最好是使用 GUID 而不是名称,因为这意味着可以更改程序集定义资源的名称,而不必更新引用该程序集的其他程序集定义文件。

有关更多信息,请参阅创建程序集定义资源

Assembly References

Assembly References 部分仅在您启用 Override References 属性(位于 [General] 部分中)时出现。使用该区域可以指定对此程序集所依赖的预编译程序集的任何引用。

有关更多信息,请参阅引用预编译插件程序集

Platforms

设置程序集的平台兼容性。Unity 仅在包含(或不排除)的平台上编译或引用此程序集。

有关更多信息,请参阅创建特定于平台的程序集

Version Defines

根据项目中包和模块的版本指定要定义的符号。

属性: 描述:
Resource 一个包或模块
Define 该符号定义 Resource 的适用版本何时也出现在此 Unity 项目中。
Expression 定义版本或版本范围的表达式。有关更多信息,请参阅 Version Defines
Expression outcome 表达式将作为逻辑语句进行求值,其中 “x” 是要检查版本。如果表达式结果显示 Invalid,则表达式格式错误。

有关更多信息,请参阅基于项目包定义符号

其他资源

程序集元数据和编译详细信息
程序集定义引用属性参考