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;
            }
        }