点击程序集定义资源可在 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资源或项目设置的信息,允许您检查和编辑值。 更多信息
参见 词汇表 窗口中设置程序集的属性。
程序集定义属性分为以下部分
属性 | 描述 |
---|---|
名称 | 程序集的名称(不带文件扩展名)。程序集名称在整个项目中必须唯一。请考虑使用反向 DNS 命名样式来降低名称冲突的可能性,尤其是在您希望在一个以上项目中使用该程序集时。 注意:Unity 使用您分配给程序集定义资源的名称作为“名称”字段的默认值,但您可以根据需要更改名称。但是,如果您通过名称而不是 GUID 引用程序集定义,则更改名称将破坏引用。 |
允许“不安全”代码 | 如果您在程序集中的脚本中使用了 C# 的unsafe 关键字,则启用“允许“不安全”代码”选项。启用此设置后,Unity 会在编译程序集时将/unsafe 选项传递给 C# 编译器。 |
自动引用 | 指定预定义程序集是否应引用此项目程序集。禁用“自动引用”选项后,Unity 在编译期间不会自动引用该程序集。这不会影响 Unity 是否将其包含在构建中。 |
无引擎引用 | 启用此属性后,Unity 在编译程序集时不会添加对 UnityEditor 或 UnityEngine 的引用。 |
覆盖引用 | 启用“覆盖引用”设置以手动指定此程序集依赖的哪些预编译程序集。启用“覆盖引用”后,检查器将显示“程序集引用”部分,您可以在其中指定引用。 预编译程序集是在 Unity 项目外部编译的库。默认情况下,您在项目中定义的程序集会引用您添加到项目的全部预编译程序集,这与预定义程序集引用全部预编译程序集的方式相匹配。启用“覆盖引用”后,此程序集仅引用您在“程序集引用”下添加的预编译程序集。 注意:要阻止项目程序集自动引用预编译程序集,您可以禁用其“自动引用”选项。有关更多信息,请参见插件检查器。 |
根命名空间 | 此程序集定义中脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息 参见 词汇表的默认命名空间。如果您使用Rider或Visual Studio作为您的代码编辑器,它们会自动将此命名空间添加到您在此程序集定义中创建的任何新脚本中。 |
有关更多信息,请参见创建程序集定义资源。
定义约束指定必须定义的编译器 #define 指令,以便 Unity 编译或引用程序集。
只有在满足所有定义约束时,Unity 才会编译和引用项目程序集。约束的工作原理类似于 C# 中的 #if 预处理器指令,但作用于程序集级别而不是脚本级别。定义“定义约束”设置中的所有符号以满足约束条件。
要指定必须未定义的符号,请在其前面加上否定! (感叹号)符号。例如,如果您将以下符号指定为定义约束
!ENABLE_IL2CPP
UNITY_2018_3_OR_NEWER
当符号ENABLE_IL2CPP
未定义且符号UNITY_2018_3_OR_NEWER
已定义时,约束条件即得到满足。结果是,Unity 仅在 Unity 2018.3 或更高版本的非 IL2CPP 脚本运行时编译和引用此程序集。
您可以使用 || (OR)运算符指定至少必须存在一个约束条件才能满足约束条件。例如
UNITY_IOS || UNITY_EDITOR_OSX
UNITY_2019_3_OR_NEWER
!UNITY_ANDROID
当UNITY_IOS
或UNITY_EDITOR_OSX
和UNITY_2019_3_OR_NEWER
已定义且UNITY_ANDROID
未定义时,约束条件即得到满足。各行类似于在其约束之间执行逻辑 AND 运算。上述示例等效于
(UNITY_IOS 或 UNITY_EDITOR_OSX) 且 (UNITY_2019_3_OR_NEWER) 且 (非 UNITY_ANDROID)
您可以使用 Unity 的任何内置 #define 指令、全局编译器响应 (.rsp) 文件中定义的符号以及项目“脚本定义符号”播放器设置中定义的任何符号。有关更多信息(包括内置符号列表),请参见平台相关编译。
注意:“脚本定义符号”设置是特定于平台的。如果您使用此设置来定义 Unity 是否应使用程序集,请确保在所有相关平台上定义必要的符号。
有关更多信息,请参见有条件地包含程序集。
Unity 根据当前定义的设置使用指示器标记每个约束(例如,以下三组约束指示第一个符号当前已定义,而其他两个符号未定义)。由于每个单独的约束都必须为真才能满足整体约束,因此编辑器将整个“定义约束”部分标记为当前不兼容或无效。
要满足此示例中的约束,您可以将脚本后端为 Unity 中的脚本提供支持的框架。Unity 根据目标平台支持三种不同的脚本后端:Mono、.NET 和 IL2CPP。但是,通用 Windows 平台仅支持两种:.NET 和 IL2CPP。 更多信息
参见 词汇表更改为IL2CPPUnity 开发的脚本后端,您可以在为某些平台构建项目时将其用作 Mono 的替代方案。 更多信息
参见 词汇表(在播放器设置中),并从第三个约束中删除无效字符。但是,通常重要的是在构建项目时如何评估约束,而不是约束在 Unity 编辑器中如何显示(例如,您可能有一个程序集,您只想将其包含在使用 IL2CPP 后端的构建中,而不是在使用 Mono 后端的其他构建中)。
属性 | 描述 |
---|---|
程序集定义引用 | 指定对您使用程序集定义资源创建的其他程序集的引用。Unity 使用这些引用来编译程序集,并定义程序集之间的依赖项。 |
使用 GUID | 此设置控制 Unity 如何序列化对其他程序集定义资源的引用。启用此属性后,Unity 会将引用保存为资源的 GUID,而不是程序集定义名称。最好使用 GUID 而不是名称,因为这意味着您可以更改程序集定义资源的名称,而无需更新引用它的其他程序集定义文件。 |
有关更多信息,请参见创建程序集定义资源
仅当您启用覆盖引用属性(在常规部分中)时,“程序集引用”部分才会显示。使用此区域指定此程序集依赖的任何预编译程序集的引用。
有关更多信息,请参见引用预编译的插件程序集
设置程序集的平台兼容性。Unity 仅在包含(或未排除)的平台上编译或引用此程序集。
有关更多信息,请参见创建特定于平台的程序集
指定根据项目中包和模块的版本定义哪些符号。
属性 | 描述 |
---|---|
资源 | 包或模块 |
定义 | 当此 Unity 项目中也存在资源的适用版本时要定义的符号。 |
表达式 | 定义版本或版本范围的表达式。请参见版本定义表达式。 |
表达式结果 | 表达式评估为逻辑语句,其中“x”为检查的版本。如果表达式结果显示“无效”,则表达式格式错误。 |
有关更多信息,请参见根据项目包定义符号
AssemblyDefinitionImporter