//用户点击了确定按钮
        private void RealDownloadPatch()
        {
            float needSize = (m_totalUnpackSize + m_totalSize) * 1.2f;
            // TODO:正确的磁盘容量自己写接口取获取
            long diskSize = 1073741824;

            Debug.LogFormat("下载补丁,磁盘容量:{0}, 需要容量:{1}", diskSize, needSize);
            if (diskSize < needSize)
            {
                float diff = needSize - diskSize;
                SetConfirmTips(string.Format("手机存储空间不足,还缺: {0},请释放手机内存后重试", CommonHelper.FormatKB(diff)), "更新", () =>
                {
                    RealDownloadPatch();
                    SetConfirmTipsPanelVisable(false);
                });
                return;
            }

            var tips = string.Format("确定下载补丁包?数量:{0}", m_lstDiffVersions.Count);

            SetConfirmTips(tips, "确定", () =>
            {
                ResetWorks();
                if (m_lockProgress == null)
                {
                    m_lockProgress = new Object();
                    m_lockMsg      = new Object();
                }

                m_strErrMsg      = "";
                m_haveDownedSize = 0;

                string strDownTips = "资源更新中";
                strDownTips        = strDownTips + "(" + CommonHelper.FormatKB(m_totalSize) + ")";
                SetTipText(strDownTips);
                var length = m_lstDiffVersions.Count;
                FileHelper.Mkdir(AppConst.UpdateCachePath);
                for (int i = 0; i < m_lstDiffVersions.Count; i++)
                {
                    ABFileInfo versionInfo = m_lstDiffVersions[i];
                    string strURL          = m_strDownloadUrl + versionInfo.filename;
                    string strPath         = AppConst.UpdateCachePath + "/" + versionInfo.filename;
                    Debug.Log("添加任务,下载文件到:" + strPath);
                    AddWork(new Downloader(strURL, strPath, OnDownloadFileProgress, OnDownloadFileEnd));
                }
                StartWork();
                SetConfirmTipsPanelVisable(false);
            });
        }
        // 计算差异文件并开始下载
        private void CalDiffToDownload()
        {
            SetTipText("对比差异文件中...");

            m_lstDiffVersions = m_lstDiffVersions == null ? new List <ABFileInfo>() : m_lstDiffVersions;
            m_lstDiffVersions.Clear();
            m_totalSize = 0;

            //先检索沙盒目录的verions文件,如果没有,证明是新包会去Resource下读取versions文件
            string localVersionFilePath = AppConst.DataPath + "/" + AppConst.VersionFileName;

            if (File.Exists(localVersionFilePath))
            {
                m_dicLocalVersions = FileHelper.ReadABVersionInfo(localVersionFilePath);
            }
            else
            {
                localVersionFilePath = Path.GetFileNameWithoutExtension(AppConst.VersionFileName);
                var textAsset = Resources.Load <TextAsset>(localVersionFilePath);
                m_dicLocalVersions = FileHelper.ReadABVersionFromText(textAsset.text);
                Resources.UnloadAsset(textAsset);
            }
            Debug.LogFormat("本地Md5文件路径:{0}", localVersionFilePath);

            foreach (KeyValuePair <string, ABFileInfo> pair in m_dicSvrVersions)
            {
                ABFileInfo svrInfo   = pair.Value;
                ABFileInfo localInfo = null;
                m_dicLocalVersions.TryGetValue(svrInfo.filename, out localInfo);
                //排除和母包中md5一样的热更列表
                bool isNeedDownLoad = localInfo == null || localInfo.md5 != svrInfo.md5;
                if (isNeedDownLoad)
                {
                    // 如果有差异,先删除本地文件
                    if (localInfo != null)
                    {
                        string localFilePath = Utility.UpdatePath + localInfo.filename;
                        FileHelper.DeleteFile(localFilePath);
                    }
                    string strCachePath = AppConst.UpdateCachePath + "/" + svrInfo.filename;
                    if (!FileHelper.IsFileExist(strCachePath))
                    {
                        m_totalSize += svrInfo.compressSize;
                        m_lstDiffVersions.Add(svrInfo);
                    }
                }
            }

            var tips = string.Format("需要下载的更新大小:{0}, 差异文件数量:{1}", m_totalSize, m_lstDiffVersions.Count);

            Debug.Log(tips);
            SetTipText(tips);
            if (m_totalSize > 0)
            {
                //wifi或者数据下载量小于设定值,直接下载
                if (CommonUtil.IsWifi || m_totalSize < AppConst.AUTO_DOWNLOAD_SIZE)
                {
                    RealDownloadPatch();
                }
                else
                {
                    SetConfirmTips(string.Format("是否确定使用手机流量下载[{0}KB]的游戏资源?", CommonHelper.FormatKB(m_totalSize)), "继续", () =>
                    {
                        RealDownloadPatch();
                        SetConfirmTipsPanelVisable(false);
                    });
                }
            }
            else
            {
                OnProgress(1f);
                OnDestory();
                m_onDownPatchDone(true);
            }
        }