Unity 2017.3出了个新功能,可以让你的代码分开编译成多个dll,如果还不知道它能干嘛的朋友我大概总结一下就是:缩减编译时间。更多信息请访问官网
我一直在关注这个事情,这两天终于上手尝试了,但是有个让人不舒服的坑:
我们通常在开发的时候会写一些编辑器脚本,只要它放在任意位置的Editor文件夹下就可以了,Unity在构建的时候会聪明得忽略这些文件夹里面的脚本。然而这个功能却与新加入的asmdef文件相冲突,通常使用在新建asmdef文件以后该文件夹的父文件夹以内的任何脚本将会被编译成一个独立的dll,一个独立的dll!再也不会被智能地区分为编辑器程序集和非编辑器程序集了!
解决办法有3个:
将所有散落在各处地Editor脚本统一归到一个根文件夹一下,并在这个文件夹创建一个新的asmdef文件,最后勾选editor平台。这样做的话对那些比较喜欢将editor脚本散落在各个相关文件周围的人影响比较大(就是我),将这些脚本移出去以后可能就不再好找了。
将所有editor相关的脚本包上#if UNITY_EDITOR #endif代码块,这样一来构建的时候这些代码就自然被忽略了。缺点就是包代码块比移动文件要慢得多。
等Unity开发团队完善这个功能。
网络上关于Assembly Definition Files的信息太少了,我在这里能丢出一点问题就丢出一点吧。