在编辑器下,每次修改完代码后,就会自动编译,最终所有代码将编译成DLL文件。一共4个。
//--编译规则
脚本分为 运行时脚本 和 编辑时脚本 两大类,运行时脚本最终会编译进游戏包中,而编辑时脚本仅用于编辑器模式下,不会被打进游戏包。
脚本存放的目录决定了它将编译在哪个DLL 文件中。
Plugins 目录下的脚本优先编译,然后才编译其他目录,最后会编译 Editor 目录下的脚本,最终编译出4份DLL文件。
DLL的编译顺序是Assembly-CSharp-firstpass.dll > Assembly-CSharp-Editor-firstpass.dll > Assembly-CSharp.dll > Assembly-CSharp-Editor.dll。
//--优化编译
随便修改一些代码,就要等Unity 编译DLL好久,开发效率大打折扣。
游戏代码大致可以分成两类,框架类代码 和 逻辑性代码。
框架类代码成熟后,并不需要经常修改并且它不需要访问逻辑性代码,而逻辑性代码的改动频率是极高的。
所以,我们可以把框架类代码放在Plugins目录下,这样改动非Plugins 目录下的逻辑性代码是,就不会额外编译 Plugins 目录下的代码了,编译就快了。
如果逻辑性代码量非常大,还是会造成编译慢的问题,此时还可以把部分CS代码预先编译成DLL,这样编译就更快了。
//--脚本跨平台
Unity 自己提供了两个核心的DLL库,UnityEditor.dll 和 UnityEngine.dll 。
Unity 编辑器只支持 Windows macOS 和 Linux 这3个平台,所以代码大部分都是由C#编写并且编译在UnityEditor.d