Unity3D :程序集定义 (Assembly Definition) 属性
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
程序集定义 (Assembly Definition) 属性
单击程序集定义资源 (Assembly Definition Asset) 可以在 Inspector 窗口中设置程序集的属性。
程序集定义属性分为以下部分:
- Name and General
- Define Constraints
- Assembly Definition References
- Assembly References
- Platforms
- Version Defines
Name and General
属性: | 描述: |
---|---|
Name | 程序集的名称(不带文件扩展名)。程序集名称在整个项目中必须是唯一的。请考虑使用反向 DNS 命名样式来减少名称冲突的可能性,尤其是在要在多个项目中使用该程序集时。 注: Unity 使用您分配给“程序集定义”资源的名称作为“名称”字段的默认值,但您可以根据需要更改名称。但是,如果按名称而不是其 GUID 引用程序集定义,则更改名称将中断引用。 |
Allow ‘unsafe’ Code | 如果在程序集内的脚本中使用了 C# 关键字,请启用 Allow ‘unsafe’ Code 选项。启用此设置后,Unity 在编译程序集时会将 /unsafe 选项传递到 C# 编译器。unsafe |
Auto Referenced | 指定预定义的程序集是否应引用此项目程序集。禁用 Auto Reference 选项后,Unity 不会在编译过程中自动引用该程序集。这不会影响 Unity 是否将文件包含在构建中。 |
No Engine References | 启用此属性后,Unity 在编译程序集时不会添加对 UnityEditor 或 UnityEngine 的引用。 |
Override References | 启用“重写引用”设置以手动指定此程序集所依赖的预编译程序集。启用“覆盖引用”时,检查器将显示“程序集引用”部分,您可以使用该部分指定引用。 预编译程序集是在 Unity 项目外部编译的库。默认情况下,在项目中定义的程序集引用添加到项目中的所有预编译程序集,这与预定义程序集引用所有预编译程序集的方式相匹配。启用“重写引用”时,此程序集仅引用在“程序集引用”下添加的预编译程序集。 注: 若要防止项目程序集自动引用预编译程序集,可以禁用其“自动引用”选项。请参阅插件检查器了解更多信息。 |
Root Namespace | 此程序集定义中脚本的默认命名空间。如果使用 Rider 或 Visual Studio 作为代码编辑器,它们会自动将此命名空间添加到在此程序集定义中创建的任何新脚本中。 |
有关更多信息,请参见创建程序集定义资产。
Define Constraints
定义约束指定编译器#define指令,Unity 必须定义这些指令才能编译或引用程序集。
仅当满足所有定义约束时,Unity 才会编译和引用项目程序集。约束的工作方式类似于 C# 中的 #if 预处理器指令,但在程序集级别而不是脚本级别。定义约束设置中的所有符号,以满足约束。
要表示必须取消定义某个符号,请在该符号前面添加否定(叹号)符号作为前缀。例如,如果在 Define Constraints 中指定以下符号:!
!ENABLE_IL2CPP
UNITY_2018_3_OR_NEWER
当未定义符号且已定义符号时,满足约束条件。结果是,Unity 仅在 Unity 2018.3 或更高版本的非 IL2CPP 脚本运行时上编译和引用此程序集。ENABLE_IL2CPPUNITY_2018_3_OR_NEWER
您可以使用 ||(OR) 运算符,用于指定必须至少存在一个约束才能满足约束。例如:
UNITY_IOS || UNITY_EDITOR_OSX
UNITY_2019_3_OR_NEWER
!UNITY_ANDROID
当定义 or 和未定义时,将满足约束条件。各个行类似于在其中的约束之间执行逻辑 AND 操作。上面的例子等效于:UNITY_IOSUNITY_EDITOR_OSXUNITY_2019_3_OR_NEWERUNITY_ANDROID
(UNITY_IOS OR UNITY_EDITOR_OSX) AND (UNITY_2019_3_OR_NEWER) AND (NOT UNITY_ANDROID)
可以使用 Unity 的任何内置 #define 指令、全局编译器响应文件 (.rsp) 定义的符号,以及项目的 Scripting Define Symbols Player 设置中定义的任何符号。请参阅[平台相关的编译]以了解更多信息(包括内置符号的列表)。
注: “脚本定义符号”设置是特定于平台的。如果使用此设置定义 Unity 是否应使用程序集,请确保在所有相关平台上定义必要的符号。
有关更多信息,请参见有条件地包括程序集。
无效或不兼容的约束
Unity 根据当前定义的设置使用指示器标记每个约束(例如,以下一组三个约束指示第一个符号当前已定义,而其他两个符号未定义)。由于每个单独的约束必须为 true 才能满足整体约束,因此编辑器会将整个“定义约束”部分标记为当前不兼容或无效。
若要满足此示例中的约束,可以将第二个约束的脚本后端更改为 IL2CPP(在“播放器设置”中),并从第三个约束中删除无效字符。但是,通常重要的是在生成项目时如何评估约束,而不是约束在 Unity 编辑器中的显示方式(例如,您可能只想将程序集包含在使用 IL2CPP 后端的生成中,而不包含在使用 Mono 后端的其他生成中)。
Assembly Definition References
属性: | 描述: |
---|---|
Assembly Definition References | 指定对使用程序集定义资产创建的其他程序集的引用。Unity 使用这些引用来编译程序集,并定义程序集之间的依赖关系。 |
Use GUIDs | 此设置控制 Unity 如何序列化对其他程序集定义资源的引用。启用此属性后,Unity 将这些引用另存为资源的 GUID,而不是程序集定义的名称。最好是使用 GUID 而不是名称,因为这意味着可以更改程序集定义资源的名称,而不必更新引用该程序集的其他程序集定义文件。 |
For more information, see Creating an Assembly Definition asset
Assembly References
仅当启用“重写引用”属性(在“常规”部分中)时,才会显示“程序集引用”部分。使用此区域可以指定对此程序集所依赖的预编译程序集的任何引用。
有关更多信息,请参阅 引用预编译的插件程序集
Platforms
设置程序集的平台兼容性。Unity 仅在包含(或不排除)的平台上编译或引用此程序集。
For more information, see Creating a platform-specific assembly
版本定义
根据项目中包和模块的版本指定要定义的符号。
属性: | 描述: |
---|---|
Resource | 一个包或模块 |
Define | 该符号定义 Resource 的适用版本何时也出现在此 Unity 项目中。 |
Expression | 定义版本或版本范围的表达式。请参见版本定义表达式。 |
Expression outcome | 表达式作为逻辑语句计算,其中“x”是检查的版本。如果表达式结果显示“无效”,则表达式格式不正确。 |
有关详细信息,请参阅基于工程包定义符号
由3D建模学习工作室整理翻译,转载请注明出处!