internal static void WaitForRequestToBeActive(WebRequestQueueOperation request, int millisecondsTimeout) { var completedRequests = new List <UnityWebRequestAsyncOperation>(); while (s_QueuedOperations.Contains(request)) { completedRequests.Clear(); foreach (UnityWebRequestAsyncOperation webRequestAsyncOp in s_ActiveRequests) { if (UnityWebRequestUtilities.IsAssetBundleDownloaded(webRequestAsyncOp)) { completedRequests.Add(webRequestAsyncOp); } } foreach (UnityWebRequestAsyncOperation webRequestAsyncOp in completedRequests) { bool requestIsActive = s_QueuedOperations.Peek() == request; webRequestAsyncOp.completed -= OnWebAsyncOpComplete; OnWebAsyncOpComplete(webRequestAsyncOp); if (requestIsActive) { return; } } System.Threading.Thread.Sleep(millisecondsTimeout); } }
private void RequestOperation_completed(AsyncOperation op) { if (m_Complete) { return; } var webOp = op as UnityWebRequestAsyncOperation; string textResult = null; Exception exception = null; if (webOp != null) { var webReq = webOp.webRequest; if (!UnityWebRequestUtilities.RequestHasErrors(webReq, out UnityWebRequestResult uwrResult)) { textResult = webReq.downloadHandler.text; } else { exception = new RemoteProviderException($"{nameof(TextDataProvider)} : unable to load from url : {webReq.url}", m_PI.Location, uwrResult); } } else { exception = new RemoteProviderException(nameof(TextDataProvider) + " unable to load from unknown url", m_PI.Location); } CompleteOperation(textResult, exception); }