StartCoroutine 加载配置文件卡顿现象严重

            一般我们加载游戏客户端配置文件到内存中时,都是用StartCoroutine的方式

                 private IEnumerator loadConfigFromLocal (string path, string name, int version)
{       
Debug.Log (name + " :load time start= " + UtilTool.getNowDate () + "---frameCount=" + Time.frameCount);
using (WWW www = new WWW(path)) {
Debug.Log (name + " :load time processing = " + UtilTool.getNowDate () + "---frameCount=" + Time.frameCount);
yield return www;
Debug.Log (name + " :load time end= " + UtilTool.getNowDate () + "---frameCount=" + Time.frameCount);
if (www.error == null) {

if (this.loadEvent != null) {
loadEvent (this);
}
} else {
Debug.Log (www.error);
}
}

                          一般的做法就是有一个main配置表里面列举了所有需要加载的子配置表。在加载子配置表的时候切不可用for循环一次性全部用委托去调用StartCoroutine利用协程读取。因为for循环处于当前帧中。因此所有的WWW www = new WWW(srting url)操作会全部在当前帧中执行完。同时会导致的后果就是,所有的加载配置文件操作会被Unity强制的在下一帧内完成。此时就会出现加载配置文件时帧数极低。因为此时的当前帧要负责加载完所有配置。建议做法是用Queue存储所有的配置文件。利用队列一帧一帧的加载。

                

你可能感兴趣的:(Unity3D)