private IEnumerator BeginLoad(string url) { Debug.Log(url); PackageResourceWWWElement loader = new PackageResourceWWWElement(url); yield return(loader); if (!string.IsNullOrEmpty(loader.GetError())) { Exception e = new Exception(loader.GetError()); loader.GetRequest().Dispose(); // done with error if (null != m_DoneCallback) { m_DoneCallback(null, e); } yield break; } if (null != m_DoneCallback) { m_DoneCallback(loader.GetRequest().text, null); loader.GetRequest().Dispose(); } }
private IEnumerator BeginLoad(PackageResourceLoaderElement taskElem) { Debug.Log(taskElem.GetUrl()); PackageResourceWWWElement loader = new PackageResourceWWWElement(taskElem.GetUrl()); yield return(loader); // update loader count --m_iCurrentLoaderCount; if (m_bIsCrash) { loader.GetRequest().Dispose(); if (m_iCurrentLoaderCount == 0) { m_bIsRunning = false; } } else { OnOneTaskDone(taskElem, loader); } }
private void OnOneTaskDone(PackageResourceLoaderElement taskElem, PackageResourceWWWElement request) { do { if (request.GetError() != null) { taskElem.SetErrorInfo(request.GetError()); // release www request.GetRequest().Dispose(); // add to error list m_TaskErrorQueue.Enqueue(taskElem); break; } // check www content if (null == request.GetRequest().bytes) { taskElem.SetErrorInfo("load error"); // release www request.GetRequest().Dispose(); // add to error list m_TaskErrorQueue.Enqueue(taskElem); break; } try { byte[] content = request.GetRequest().bytes; if (null != m_Decompressor) { // decompress content = m_Decompressor.Decompress(content); } // ensure folder PackageResourceTool.EnsureFolder(taskElem.GetOutputPath()); // try write byte files System.IO.File.WriteAllBytes(taskElem.GetOutputPath(), content); // add to succeed list m_TaskSucceedQueue.Enqueue(taskElem); } catch (Exception e) { // mark error msg taskElem.SetErrorInfo(e.Message); // release www request.GetRequest().Dispose(); // add to error list m_TaskErrorQueue.Enqueue(taskElem); // check is need crash m_bIsCrash = true; CallbackWithError(); return; } }while (false); // check next CheckNext(taskElem); }