예제 #1
0
    //协程-下载更新包
    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);
            }
        }
    }
예제 #2
0
    //构建资源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;
    }