任何包含依赖于另一个程序集中的类型的程序集(例如类或结构),都必须引用另一个程序集。您可以通过在检视面板窗口中配置程序集定义属性来控制程序集之间的引用。有关更多信息,请参阅程序集定义 (Assembly definition) 属性参考。
默认情况下,预定义程序集会引用所有其他程序集,包括使用程序集定义创建的程序集 (1) 以及作为插件添加到项目中的预编译程序集 (2)。使用程序集定义资源创建的程序集会自动引用所有预编译程序集 (3):
在默认设置中,预定义程序集中的类可以使用项目中任何其他程序集定义的所有类型。同样,使用程序集定义资源创建的程序集可以使用在任何预编译(插件)程序集中定义的所有类型。
要防止预定义程序集自动引用自定义程序集,请在检视面板中取消选择程序集定义的 Auto Referenced 属性。这意味着在更改程序集中的代码时不会重新编译预定义程序集,但也意味着预定义程序集无法直接使用此程序集中的代码。
同样,可以通过在插件资源的 Plugin 检视面板中关闭 Auto Referenced 属性来预定义或自定义程序集自动引用插件程序集。您仍然可以从自定义程序集中添加对插件的显式引用,请参阅引用预编译插件程序集。
Unity 不允许以下类型的引用:
要使用另一个程序集的代码,必须在程序集定义资源中添加对其他程序集的引用。
要添加对其他程序集的引用,请执行以下操作:
选择需要引用的程序集的程序集定义以在__检视面板__中查看其属性。
在 Assembly Definition References 部分中,单击 + 按钮以添加新引用。
将程序集定义资源分配给引用列表中新创建的字段。
启用 Use GUIDs 选项可以更改被引用的程序集定义资源的文件名,而无需更新其他程序集定义中的引用以反映新名称。
注意:如果删除了资源文件的元数据文件,或者在将文件移动到 Unity 编辑器外部时没有同时移动元数据文件,则必须重置 GUID。
默认情况下,使用程序集定义资源创建的所有自定义程序集会自动引用所有预编译程序集。这意味着在更新任何一个预编译程序集时,Unity 都要重新编译所有程序集,即使未使用程序集中的代码也是如此。
要避免这种额外开销,可以覆盖自动引用并指定仅引用程序集实际使用的预编译库:
选择需要引用的程序集的程序集定义以在__检视面板__中查看其属性。
在 General 部分中,启用 Override References 选项。
选中 Override References 后,__检视面板__的 Assembly References 部分会成为可用状态。
在 Assembly References 部分中,单击 + 按钮以添加新引用。
使用空字段中的下拉列表指派对预编译程序集的引用。该列表会显示项目中适用于当前在 Build Profiles 中活动的平台的所有预编译程序集。(在 [Plugin 检视面板]在设置预编译程序集的平台兼容性。)
单击__应用 (Apply)__。
为构建项目时针对的每个平台重复操作。