//协程-下载更新包 IEnumerator Coroutine_DownloadUpdatePackage() { while (DownIndex < UpdateList.Count) { XML_PackMD5.Info info = UpdateList[DownIndex]; ++DownIndex; bool isSucc = false; if (long.Parse(info.FileSize) != 0) {//下载 string filename = info.PackName; string url = ResPath.GetServerPackURL(filename); WWW down = new WWW(url); while (!down.isDone) { yield return(down); } if (down.isDone && down.error == null) { if (ResUtil.SaveFile(down.bytes, ResPath.LocalPackagePath, filename)) {//保存文件成功 isSucc = true; } else {//保存文件失败 Debug.LogWarning("save file failed! file = " + ResPath.LocalPackagePath + filename); } } else { Debug.LogWarning("download failed, url = " + url + ",isDone:" + down.isDone + ",error:" + down.error); } } else { isSucc = true; } if (isSucc) {//更新成功 SuccList.Add(info); //更新本地 PackMD5Local.Update(info); FilePackLocal.Update(info.PackName, FilePackRemote); PackDependLocal.Update(info.PackName, PackDependRemote); DownSize += long.Parse(info.FileSize); } else { FailList.Add(info); //DownSize += long.Parse(info.FileSize); } } }
//构建资源Map public void BuildGameResMap() { Update.LoadConfigFile(); List <XML_PackMD5.Info> packMD5List = Update.GetPackMD5List(); List <XML_FilePack.Info> filePackList = Update.GetFilePackList(); List <XML_PackDepend.Info> packDependList = Update.GetPackDependList(); foreach (var fileInfo in filePackList) { string tag = ""; XML_PackMD5.Info md5Info = packMD5List.Find(item => item.PackName == fileInfo.PackName); if (md5Info != null) { tag = md5Info.Tag; } GameResPackage p = GetPackage(fileInfo.PackName, tag); XML_PackDepend.Info info = packDependList.Find(item => item.PackName == fileInfo.PackName); if (info != null) {//构建包的依赖 foreach (var depend in info.DependPackMap) { tag = ""; md5Info = packMD5List.Find(item => item.PackName == depend.Key); if (md5Info != null) { tag = md5Info.Tag; } GameResPackage dependP = GetPackage(depend.Key, tag, depend.Value); if (!p.DependPack.Contains(dependP)) { p.DependPack.Add(dependP); } } } else { Debug.LogWarning("pack depend is null, packname:" + fileInfo.PackName); } //add if (!AllGameResMap.ContainsKey(fileInfo.FileName.ToLower())) { AllGameResMap.Add(fileInfo.FileName.ToLower(), p); } } //构建完毕 //清除AllPackageMap AllPackageMap.Clear(); // //UsePackage = true; }