返回
Featured image of post Unity程序集定义(Assembly Definition File)

Unity程序集定义(Assembly Definition File)

作用

Unity开发者可以在一个文件夹中自定义程序集。定义明晰的依赖关系,可以确保脚本更改后,只会重新生成必需的程序集,减少编译时间。

在一个项目中会存在多个程序集,例如SDK集合、热更集合、插件集合、主集合等,如果未自定义程序集,修改其中一个集合的脚本后Unity再次编译,这时Unity会将所有集合都编译一遍,时间的浪费是我们所不希望的。当我们为每一个集合都定义程序集后,修改脚本只会编译对应的程序集。

创建方法

通过在Unity中点击:Assets > Create > Assembly Definition菜单创建。该文件的扩展名是.asmdef。

需要注意的是程序集名与文件名无关,真正有关联关系的是Inspector面板中Name对应的名称

该程序集我们还可以在解决方案中观察到

程序集依赖关系

程序集依赖关系成树状,一旦确立依赖关系,低层级的程序集则无法调用高层级程序集里的类和方法。

这里我设立了三个程序集:Unity.Hotfix、Unity.Model、Unity.ThirdParty;

他们之间的依赖关系如下

  • Unity.Hotfix=》Unity.Model、Unity.ThirdParty
  • Unity.Model=》Unity.ThirdParty
  • Unity.ThirdParty=》null

这样在Hotfix程序集里可以调用Model与ThirdParty程序集中的脚本,但是Model无法调用Hotfix程序集中的脚本

程序集会管理它当前所在文件夹和子文件夹中的脚本。

如果一个脚本当前文件夹中定义了一个程序集,它的父文件夹中也定义了一个程序集,该脚本会被归纳到它当前文件夹的程序集中

平台

在平台中可以设置程序集编译平台

这样可以使某些程序集避免在一些特殊平台下被编译,常见的例如我们希望我们的Edtor程序集或热更资源程序集只在编辑器下被编译,那么我们就可以在平台设置中只勾选Editor

Licensed under CC BY-NC-SA 4.0
0