static public int CreatWWW(IntPtr l) { try { WWWRequest self = (WWWRequest)checkSelf(l); self.CreatWWW(); pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
void Update() { if (!ConfigLoaded) { return; } // Check if any WWW is finished or errored List <string> newFinisheds = new List <string>(); List <string> newFaileds = new List <string>(); foreach (WWWRequest request in processingRequest.Values) { if (request.www.error != null) { if (request.triedTimes - 1 < bmConfiger.downloadRetryTime) { // Retry download request.CreatWWW(); } else { newFaileds.Add(request.url); Debug.LogError("Download " + request.url + " failed for " + request.triedTimes + " times.\nError: " + request.www.error); } } else if (request.www.isDone) { newFinisheds.Add(request.url); } } // Move complete bundles out of downloading list foreach (string finishedUrl in newFinisheds) { succeedRequest.Add(finishedUrl, processingRequest[finishedUrl]); //var bundle = processingRequest[finishedUrl].www.assetBundle; processingRequest.Remove(finishedUrl); } // Move failed bundles out of downloading list foreach (string finishedUrl in newFaileds) { if (!failedRequest.ContainsKey(finishedUrl)) { failedRequest.Add(finishedUrl, processingRequest[finishedUrl]); } processingRequest.Remove(finishedUrl); } // Start download new bundles int waitingIndex = 0; while (processingRequest.Count < bmConfiger.downloadThreadsCount && waitingIndex < waitingRequests.Count) { WWWRequest curRequest = waitingRequests[waitingIndex++]; bool canStartDownload = curRequest.bundleData == null || isBundleDependenciesReady(curRequest.bundleData.name); if (canStartDownload) { waitingRequests.Remove(curRequest); curRequest.CreatWWW(); processingRequest.Add(curRequest.url, curRequest); } } }
void Update() { if (!ConfigLoaded) { return; } // Check if any WWW is finished or errored List <string> newFinisheds = new List <string>(); List <string> newFaileds = new List <string>(); foreach (WWWRequest request in processingRequest.Values) { if (request.error != null) { if (request.triedTimes - 1 < bmConfiger.downloadRetryTime) { // Retry download request.CreatWWW(); } else { request.DisposeWWW(); newFaileds.Add(request.bundleName); Debug.LogError("{BM}Download Bundle " + request.bundleName + "URL:" + request.info.url + "failed for " + request.triedTimes + " times.\nError: " + request.error); } } else if (request.isDone) { request.DisposeWWW(); newFinisheds.Add(request.bundleName); } } // Move complete bundles out of downloading list foreach (string finishedUrl in newFinisheds) { var req = processingRequest[finishedUrl]; if (req.info.needDownload) { req.info.needDownload = false; } req.assetBundle.name = req.bundleName; dbgDownloadBundles.Add(req.assetBundle); succeedRequest.Add(finishedUrl, req); processingRequest.Remove(finishedUrl); } // Move failed bundles out of downloading list foreach (string finishedUrl in newFaileds) { if (!failedRequest.ContainsKey(finishedUrl)) { failedRequest.Add(finishedUrl, processingRequest[finishedUrl]); } processingRequest.Remove(finishedUrl); } // Start download new bundles int waitingIndex = 0; while (processingRequest.Count < bmConfiger.downloadThreadsCount && waitingIndex < waitingRequests.Count) { WWWRequest curRequest = waitingRequests[waitingIndex++]; bool canStartDownload = curRequest.info == null || isBundleDependenciesReady(curRequest.info.name); if (canStartDownload) { waitingRequests.Remove(curRequest); curRequest.CreatWWW(); processingRequest.Add(curRequest.bundleName, curRequest); } } if (needSaveDownloadInfoCache && processingRequest.Count == 0 && waitingRequests.Count == 0) { needSaveDownloadInfoCache = false; BMUtility.SaveToPersistentData(bundles, DOWNLOAD_INFO_CACHE_NAME); } } //update end
void Update() { if (!ConfigLoaded) { return; } // Check if any WWW is finished or errored List <string> newFinisheds = new List <string>(); List <string> newFaileds = new List <string>(); foreach (WWWRequest request in processingRequest.Values) { if (request.www.error != null && request.www.error != "") { if (request.triedTimes - 1 < bmConfiger.downloadRetryTime) { // Retry download request.CreatWWW(); } else { newFaileds.Add(request.url); Debug.LogError("Download " + request.url + " failed for " + request.triedTimes + " times.\nError: " + request.www.error); } } else if (request.www.isDone) { newFinisheds.Add(request.url); } } // Move complete bundles out of downloading list foreach (string finishedUrl in newFinisheds) { succeedRequest.Add(finishedUrl, processingRequest[finishedUrl]); //var bundle = processingRequest[finishedUrl].www.assetBundle; processingRequest.Remove(finishedUrl); } // Move failed bundles out of downloading list foreach (string finishedUrl in newFaileds) { if (!failedRequest.ContainsKey(finishedUrl)) { failedRequest.Add(finishedUrl, processingRequest[finishedUrl]); } processingRequest.Remove(finishedUrl); } // Start download new bundles for (int i = waitingRequests.Count - 1; i >= 0; --i) // Need to remove elements when iterating so have to iterarte list backward. { if (processingRequest.Count >= bmConfiger.downloadThreadsCount) { break; } WWWRequest curRequest = waitingRequests[i]; bool canStartDownload = curRequest.bundleData == null || isBundleDependenciesReady(curRequest.bundleData.name); if (canStartDownload) { waitingRequests.RemoveAt(i); curRequest.CreatWWW(); processingRequest.Add(curRequest.url, curRequest); } } }
void Update() { if (!ConfigLoaded) { return; } // Check if any WWW is finished or errored //����Ƿ����������WWW�����ߴ��� List <string> newFinisheds = new List <string>(); List <string> newFaileds = new List <string>(); foreach (WWWRequest request in processingRequest.Values) { //�����������ļ��ص���Ϣ if (progressManager != null && progressManager.setCurrentDownloadFileEvent != null) { progressManager.setCurrentDownloadFileEvent(request.url); } if (progressManager != null && progressManager.setCurrentDownloadProgressEvent != null) { float progress = ProgressOfBundle(Path.GetFileName(request.url)); progressManager.setCurrentDownloadProgressEvent(progress); } if (request.www.error != null) { if (request.triedTimes - 1 < bmConfiger.downloadRetryTime) { // Retry download request.CreatWWW(); } else { newFaileds.Add(request.url); Debug.LogError("Download " + request.url + " failed for " + request.triedTimes + " times.\nError: " + request.www.error); } } else if (request.www.isDone) { newFinisheds.Add(request.url); } } List <BundleBuildState> saveBundleStates = new List <BundleBuildState>(); List <BundleData> saveBundleData = new List <BundleData>(); // �����سɹ��İ����б��processingRequest��ɾ�������뵽succeedRequest�� foreach (string finishedUrl in newFinisheds) { succeedRequest.Add(finishedUrl, processingRequest[finishedUrl]); //var bundle = processingRequest[finishedUrl].www.assetBundle; processingRequest.Remove(finishedUrl); #if UNITY_STANDALONE_WIN //�����سɹ������ݱ��浽���� string bundleName = separateUrl(finishedUrl); if (bundleDict.ContainsKey(bundleName)) { saveBundleData.Add(bundleDict[bundleName]); saveBundleStates.Add(buildStatesDict[bundleName]); string filePath = downloadLoadRootUrl + "/" + bundleDict[bundleName].bundleRelativePath + "/" + bundleName + "." + bmConfiger.bundleSuffix; FileUtils.saveFileFromStream(succeedRequest[finishedUrl].www.bytes, filePath); } #endif } #if UNITY_STANDALONE_WIN LoadBundleManager.getInstace().changeBundleData(saveBundleData, LoadBundleManager.BundleOperate.Add); LoadBundleManager.getInstace().changeBundleStates(saveBundleStates, LoadBundleManager.BundleOperate.Add); #endif // ������ʧ�ܵİ����б��processingRequest��ɾ�������뵽faileRequest�� foreach (string finishedUrl in newFaileds) { if (!failedRequest.ContainsKey(finishedUrl)) { failedRequest.Add(finishedUrl, processingRequest[finishedUrl]); } processingRequest.Remove(finishedUrl); } // ��ʼ�����°� int waitingIndex = 0; while (processingRequest.Count < bmConfiger.downloadThreadsCount && waitingIndex < waitingRequests.Count) { WWWRequest curRequest = waitingRequests[waitingIndex++]; bool canStartDownload = curRequest.bundleData == null || isBundleDependenciesReady(curRequest.bundleData.name); if (canStartDownload) { waitingRequests.Remove(curRequest); curRequest.CreatWWW(); processingRequest.Add(curRequest.url, curRequest); } } }