默认情况下,Unity 几乎将所有游戏脚本都编译到预定义 程序集 Assembly-CSharp.dll 中。(Unity 还会创建[一些较小的专用预定义程序集]。)
这种安排对于小型项目而言可以接受,但是在向项目添加更多代码时会有一些缺点:
在某个目录下创建Assembly Definition,侧在这个目录及子目录下创建的所有脚本都将被编译到这个程序集中。
MyAssembly文件夹(包含子目录)下创建的所有脚本会被编译到MyAssembly程序集中。
选择Assembly Definition菜单项会自动生成NewAssembly.asmdef文件。
选择Assembly Definition Reference菜单项会自动生成NewAssemblyReference.asmref文件。
Assembly Definition 属性 | |
属性 | 描述 |
Name |
程序集的名称(不带文件扩展名)。程序集名称在整个项目中必须是唯一的。考虑使用反向DNS命名样式以减少名称冲突的可能性,特别是如果您希望在多个项目中使用程序集。 注意:推荐使用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后,Assembly References设置才会显示。可以在这里手动添加要引用的预编译程序集。 注意:若要防止Project程序集自动引用预编译程序集,可以禁用其 |
Root Namespace |
此程序集定义中脚本的默认命名空间。如果您使用Rider或Visual Studio作为代码编辑器,它们会自动将此命名空间添加到此程序集定义中创建的任何新脚本中。
|
定义约束指定编译器#define指令,必须为Unity定义这些指令才能编译或引用程序集。
Unity仅在满足所有定义约束的情况下编译和引用项目程序集。约束的工作方式类似于C#中的#if预处理器指令,但在程序集级别而不是脚本级别。在“定义约束”设置中定义要满足的约束的所有符号。
勾选上
仅当启用
有关详细信息,请参见引用预编译的插件程序集。
设置程序集的平台兼容性。Unity 仅在包含(或不排除)的平台上编译或引用此程序集。
勾上Any Platform时,可在下面选择要排除的平台。不勾Any Platform时,可在下面选择要包含的平台。
根据项目中包和模块的版本指定要定义的符号。
Version Defines 属性 | |
属性 | 描述 |
Resource | 一个包或模块 |
Define | 该符号定义 Resource 的适用版本何时也出现在此 Unity 项目中。 |
Expression | 定义版本或版本范围的表达式。请参见版本定义表达式。 |
Expression outcome | 表达式求值为逻辑语句,其中“x”是检查的版本。如果表达式结果显示“无效”,则表达式格式不正确。 |
有关详细信息,请参见基于项目包定义符号。