public static WebRequestQueueOperation QueueRequest(UnityWebRequest request) { WebRequestQueueOperation queueOperation = new WebRequestQueueOperation(request); if (ActiveRequests.Count < MaxRequest) { UnityWebRequestAsyncOperation webRequestAsyncOp = request.SendWebRequest(); webRequestAsyncOp.completed += OnWebAsyncOpComplete; ActiveRequests.Add(webRequestAsyncOp); queueOperation.Complete(webRequestAsyncOp); } else { QueuedOperations.Enqueue(queueOperation); } return(queueOperation); }
private static void OnWebAsyncOpComplete(AsyncOperation operation) { ActiveRequests.Remove((operation as UnityWebRequestAsyncOperation)); while (QueuedOperations.Count > 0) { WebRequestQueueOperation nextQueuedOperation = QueuedOperations.Dequeue(); UnityWebRequestAsyncOperation webRequestAsyncOp = nextQueuedOperation.webRequest.SendWebRequest(); if (webRequestAsyncOp == null) { nextQueuedOperation.webRequest.Dispose(); nextQueuedOperation.webRequest = null; continue; } webRequestAsyncOp.completed += OnWebAsyncOpComplete; ActiveRequests.Add(webRequestAsyncOp); nextQueuedOperation.Complete(webRequestAsyncOp); break; } }