public IEnumerator DownloadData(TempAssetInitManager.DownloadDataEntity data)
        {
            MDebug.Log(LOG_TAG, $"Data Begin to be Download! FileName:{data.FileName},MD5:{data.MD5},Size:{data.Size}");
            string fileDownLoadUrl = IPathUtility.GetServerDownloadPath() + data.FileName;

            using (UnityWebRequest request = UnityWebRequest.Get(fileDownLoadUrl))
            {
                UnityWebRequestAsyncOperation asyOperation = request.SendWebRequest();
                while (asyOperation != null &&
                       !asyOperation.isDone)
                {
                    long calculateDownloadSize = (long)Math.Ceiling(data.Size * asyOperation.progress);
                    m_SizeOfDownloadingData = calculateDownloadSize;
                    yield return(null);
                }
                yield return(asyOperation);

                if (string.IsNullOrEmpty(request.error))
                {
                    string targetFilePath = IPathUtility.GetLocalFilePathPrefix() + data.FileName;
                    FileUtility.CreateFile(targetFilePath, request.downloadHandler.data);
                    string newFileMD5 = FileUtility.GetFileMD5(targetFilePath);
                    //MD5
                    if (!newFileMD5.Equals(data.MD5))
                    {
                        MDebug.LogError(LOG_TAG, $"New File MD5 Is Not Equals With DownloadData! FileName:{data.FileName},FileMD5:{newFileMD5},DataMD5:{data.MD5}");
                        m_CurrentDownloadCoroutine = null;
                        m_SizeOfDownloadingData    = data.Size;
                        IsAllDataDownloadFinish    = false;
                        m_RoutineAssetFinishCallBack?.Invoke(false, TotalFinishCount, TotalFinishSize);
                        m_IsDownloading = true;
                        MDebug.LogError(LOG_TAG, $"DownloadData file stop! FileName:{data.FileName} Reason:{request.error}");
                        yield break;
                    }
                    TotalFinishCount++;
                    m_SizeOfDownloadingData = data.Size;
                    m_SizeOfDownloadedData += m_SizeOfDownloadingData;
                    m_SizeOfDownloadingData = 0;
                    m_DownLoadDataQueue.Dequeue();
                    MDebug.Log(LOG_TAG, $"DownloadData has been Downloaded Success! FileName:{data.FileName},TargetFilePath:{targetFilePath}");
                    m_SingleAssetDownloadSuccessCallBack?.Invoke(data);
                    if (m_DownLoadDataQueue.Count > 0)
                    {
                        m_IsDownloading            = false;
                        IsAllDataDownloadFinish    = false;
                        m_CurrentDownloadCoroutine = null;
                    }
                    else
                    {
                        LastestDownloadTotalCount = TotalFinishCount;
                        LastestDownloadTotalSize  = TotalFinishSize;
                        m_RoutineAssetFinishCallBack?.Invoke(true, TotalFinishCount, TotalFinishSize);
                        ClearAllState();
                        IsAllDataDownloadFinish = true;
                        MDebug.Log(LOG_TAG, "All AssetData has been Downloaded!");
                    }
                }
                else
                {
                    m_CurrentDownloadCoroutine = null;
                    m_SizeOfDownloadingData    = data.Size;
                    IsAllDataDownloadFinish    = false;
                    m_RoutineAssetFinishCallBack?.Invoke(false, TotalFinishCount, TotalFinishSize);
                    m_IsDownloading = true;
                    MDebug.LogError(LOG_TAG, $"DownloadData file stop! FileName:{data.FileName} Reason:{request.error}");
                }
            }
        }
 /// <summary>
 /// 添加一个新的下载数据
 /// </summary>
 /// <param name="data"></param>
 public void AddNewDownLoadData(TempAssetInitManager.DownloadDataEntity data)
 {
     m_DownLoadDataQueue.Enqueue(data);
     TotalDownloadCount++;
     TotalDownloadSize += data.Size;
 }