今天来介绍一下Unity中的自定义程序集。在项目开发中我们经常接触到第三方插件的程序集,如DOTween、Newtonsoft.Json等。
使用自定义程序集有这么几个好处:
- 方便代码的的复用。当某一功能模块需要在多个项目中重复使用时,可以将代码编译成程序集,将程序集放入工程中即可。在代码维护时,也只需重新编译程序集替换即可。我们常用到的第三方插件就是如此。
- 在大型项目中使用程序集可以提高编译效率,在代码编译时Unity会将工程中的所有代码编译到 Assembly-CSharp.dll 程序集中去。当项目庞大代码量多的时候,代码的每一次修改都会消耗大量的时间进行编译,使用程序集则可以减少编译时间。
- 使用程序集也可以更好的模块化组织和管理代码。
- 使用程序集也可以避免源代码的暴露。
自定义程序集的创建
接下来介绍一下如何创建自定义程序集。
首先创建一个文件夹,用于存放程序集中所涉及到的代码文件。然后在文件夹下右键,在Create->Assembly Definition中创建程序集定义文件。如图MyAssembly.asmdef会包含目录下所有代码文件,以及包括所有子目录中的代码文件。这里建议程序集名称和文件夹名称保持一直,方便理解和管理。
创建完成MyAssembly.asmdef后Unity会在工程Library\ScriptAssemblies目录中自动生成一个同名的MyAssembly.dll程序集文件,其中就包含了MyAssembly目录下所有的代码。当其他工程需要使用同样的功能模块时,则可以将程序集放入Plugins目录即可。使用方式和其他第三方插件的程序集一样。
自定义程序集的参数设置
下面来介绍一下MyAssembly.asmdef程序集定义文件中的一些参数。
Name:程序集名称
Auto Referenced:指定预定义的程序集是否应引用此项目程序集。禁用 Auto Reference 选项后,Unity 不会在编译过程中自动引用该程序集。这不会影响 Unity 是否将文件包含在构建中。
Assembly Definition References是用于添加当前程序集中所需要用到的其他程序集。如图,当前程序集需要使用到Addressables功能,我们则需要将Unity.Addressables程序集进行引用添加。
更多参数介绍可以查看官方文档,链接在文章最后。
DLLSwitcher介绍
最后给大家介绍一个很好用的插件,当我们项目中即有脚本又有程序集的时候,在添加组件的时候就涉及到是要添加脚本还是程序集的问题,DLLSwitcher则可以帮助你进行转换。
首先我们可以在Unity Asset Store进行下载,下载之后进行一个导入。
在菜单栏Window->DllSwitcher打开DLLSwitcher窗口,在Dll File项中选择程序集文件。然后就可以进行引用转换了。
参考文档连接:
程序集定义:https://docs.unity3d.com/cn/2022.2/Manual/ScriptCompilationAssemblyDefinitionFiles.html
DLLSwitcher插件:https://assetstore.unity.com/packages/tools/utilities/dllswitcher-40370