问题
- Unity 5导入一个DLL的速度比Unity 4慢了大约5到10倍
原因
这些程序集需要由程序集更新器(AssemblyUpdater)进行更新。(在Unity 5.0中,更新过程由程序集更新器及脚本更新器(ScriptUpdater)自动处理。)
解决方案
Unity 5.x版本中引入了一个新的.Net属性(UnityAPICompatibilityVersionAttribute)。可以在程序集中使用这个属性,来声明其使用的API只兼容特定Unity版本。当程序集更新工具运行时,会检查待更新的程序集中是否有这个属性。如果在这个属性中的版本号与当前使用的Unity版本(Application.unityVersion)相同,那么更新程序就认为此程序集不需要更新了。
根据这个变化,可以在程序集中加入如下语句:
[assembly: UnityEngine.UnityAPICompatibilityVersion("1.2.3f1")] //在C#和Boo脚本中
@assembly: UnityEngine.UnityAPICompatibilityVersion("1.2.3f1") //在UnityScript脚本中
假如Unity的版本也是1.2.3f1,那么包含这行语句的程序集在导入Unity时就不会被更新器检查了。
更多信息
http://blogs.unity3d.com/2015/01/06/assemby-updater-faster-api-usage-detection/
http://blogs.unity3d.com/2014/06/23/unity5-api-changes-automatic-script-updating/
本文适用于Unity 5.0及以上版本