/// <summary>
        /// 报告资源更新下载过程中失败
        /// </summary>
        /// <param name="updateManager"></param>
        /// <param name="errorDescription"></param>
        /// <param name="isBreakUpdateProcess">true 标识是之名错误 结束更新</param>
        public void RecordAssetUpdateError(AssetUpdateManagerBase updateManager, string errorDescription, AssetUpdateErrorCode errorCode)
        {
            List <AssetUpdateErrorRecordInfor> errorRecordInfors = null;

            if (m_AllUpdateAssetErrorRecord.TryGetValue(errorCode, out errorRecordInfors) == false)
            {
                errorRecordInfors = new List <AssetUpdateErrorRecordInfor>();
                m_AllUpdateAssetErrorRecord.Add(errorCode, errorRecordInfors);
            }
            AssetUpdateErrorRecordInfor errorMsg = new AssetUpdateErrorRecordInfor(updateManager, errorDescription, errorCode);

            errorRecordInfors.Add(errorMsg);



            if ((int)errorCode > 0 && (int)errorCode < 100)
            {
                Debug.LogEditorInfor("更新过程遇到致命错误" + errorCode);
                if (m_CurProcess != null)
                {
                    EventCenter.Instance.StopCoroutine(m_CurProcess);
                }

                IsUpdateError = true;
                if (m_OnUpdateProcessBreakAct != null)
                {
                    m_OnUpdateProcessBreakAct(errorMsg);
                }

                return;
            }
        }
        private IEnumerator CheckAssetProcess()
        {
            foreach (var assetUpdateManager in m_AllAssetUpdateManagers)
            {
                CurAssetUpdateManager = assetUpdateManager.Value;

                if (CurAssetUpdateManager == null)
                {
                    continue;
                }
                HotAssetServerAddressInfor serverAddressInfor = ApplicationConfig.Instance.GetHotAssetServerAddressInforByType(assetUpdateManager.Key);
                CurAssetUpdateManager.m_OnUpdateFailAct = m_OnUpdateErrorAssetAct;
                CurAssetUpdateManager.BeginAssetUpdateProcess(serverAddressInfor);


                while (CurAssetUpdateManager.m_IsCompleteMD5 == false)
                {
                    yield return(null);
                }
                TotalNeedDownloadAsset += CurAssetUpdateManager.TotalNeedDownLoadCount;
            }

            IsCompleteCheckAsset = true;
            if (m_CompleteCheckAssetState != null)
            {
                m_CompleteCheckAssetState.Invoke(TotalNeedDownloadAsset);
            }
        }
        private IEnumerator UpdateAssetProcess(float delayTime, Action <string, int> donwnloadCallback)
        {
            //if (TotalNeedDownloadAsset == 0)
            //    yield break;

            if (delayTime >= 0)
            {
                yield return(new WaitForSeconds(delayTime));
            }
            foreach (var assetUpdateManager in m_AllAssetUpdateManagers)
            {
                CurAssetUpdateManager = assetUpdateManager.Value;

                if (CurAssetUpdateManager == null)
                {
                    //     m_AlreadyCompleteUpdateMager++;
                    continue;
                }
                HotAssetServerAddressInfor serverAddressInfor = ApplicationConfig.Instance.GetHotAssetServerAddressInforByType(assetUpdateManager.Key);
                CurAssetUpdateManager.m_OnUpdateFailAct = m_OnUpdateErrorAssetAct;
                CurAssetUpdateManager.BeginUpdateAsset(donwnloadCallback, null);

                while (CurAssetUpdateManager.m_IsCompleteUpdate == false)
                {
                    yield return(new WaitForSeconds(1f));
                }
                while (CurAssetUpdateManager.m_IsUpdateRecorded == false)
                {
                    yield return(null);
                }
            }

            S_IsCompleteUpdateAsset = true;
            if (m_OnCompleteUpdateAssetAct != null)
            {
                m_OnCompleteUpdateAssetAct.Invoke();
            }
        }