/// <summary> /// 单个子任务完成处理 /// </summary> /// <param name="wwwObj"></param> /// <param name="param"></param> public void HandleDownloadOne(WWW wwwObj, object param) { if (wwwObj != null && wwwObj.error == null) { if (SaveToLocalOnFinish) { SaveFile(wwwObj, currentAsset.Type); } onOneDoneCallback(wwwObj); this.onProgressCallback((int)(((index * 1.0f) / (len * 1.0f))) * 100); } else { Debuger.LogWarning("HttpService:Skiped the not exist file: index" + index + " url:" + currentAsset.Url); DList.Clear(); IsBusy = false; onCompleteCallback(false); return; } index++; if (index < len) { currentAsset = DList[index]; StartDownloadOne(); } else { index = 0; DList.Clear(); IsBusy = false; onCompleteCallback(true); } }
/// <summary> /// 开始下载一个资源队列 /// </summary> /// <param name="dList">目标队列</param> /// <param name="onCompleteCallback">完成回调</param> /// <param name="onProgressCallback">总进度回调</param> /// <param name="onOneDoneCallback">单个任务完成回调</param> /// <param name="SaveToLocalOnFinish">完成时是否缓存到本地</param> public void StartDownload(List<AssetFile> dList, Action<bool> onCompleteCallback = null, Action<int> onProgressCallback = null, Action<object> onOneDoneCallback = null, bool SaveToLocalOnFinish = true) { if (IsBusy) { Debuger.Log("Queue is in downloading ,pls wiat it done "); return; } IsBusy = true; if (onCompleteCallback != null) { this.onCompleteCallback = onCompleteCallback; } else { this.onCompleteCallback = (bool n) => { }; } if (onProgressCallback != null) { this.onProgressCallback = onProgressCallback; } else { this.onProgressCallback = (int n) => { }; } this.onOneDoneCallback = onOneDoneCallback == null ? (object n) => { } : onOneDoneCallback; this.SaveToLocalOnFinish = SaveToLocalOnFinish; index = len = 0; DList = dList; len = DList.Count; this.currentAsset = DList[index]; StartDownloadOne(); }