private IEnumerator CoLoadAssetPackBatch()
        {
#if PLAY_ASSET_DELIVERY_EXPERIMENTAL
            var assetPackNames = Assets.Select(a => a.AssetPackName).Distinct().ToList();
            _batchRequest      = PlayAssetDelivery.RetrieveAssetPackBatchAsync(assetPackNames);
            _requestInProgress = true;

            while (!_batchRequest.IsDone)
            {
                var totalProgress = 0f;
                foreach (var request in _batchRequest.Requests.Values)
                {
                    totalProgress += request.DownloadProgress;
                }

                Display.SetProgress(totalProgress / _batchRequest.Requests.Count);
                Display.SetStatus(AssetDeliveryStatus.Retrieving, AssetDeliveryErrorCode.NoError);
                yield return(null);
            }

            var allSucceeded = true;
            foreach (var request in _batchRequest.Requests.Values)
            {
                if (request.Error != AssetDeliveryErrorCode.NoError)
                {
                    Display.SetStatus(request.Status, request.Error);
                    allSucceeded = false;
                    break;
                }
            }

            if (allSucceeded)
            {
                Display.SetProgress(1f);
                Display.SetStatus(AssetDeliveryStatus.Available, AssetDeliveryErrorCode.NoError);
            }

            _requestInProgress = false;
#else
            // Assign values to avoid unassigned variable warning.
            _batchRequest      = null;
            _requestInProgress = false;
            throw new Exception("Experimental Play Asset Delivery methods are disabled.");
#endif
        }
        private IEnumerator CoLoadAssetPackBatch()
        {
            var assetPackNames = Assets.Select(a => a.AssetPackName).Distinct().ToList();

            _batchRequest      = PlayAssetDelivery.RetrieveAssetPackBatchAsync(assetPackNames);
            _requestInProgress = true;

            while (!_batchRequest.IsDone)
            {
                var totalProgress = 0f;
                foreach (var request in _batchRequest.Requests.Values)
                {
                    totalProgress += request.DownloadProgress;
                }

                Display.SetProgress(totalProgress / _batchRequest.Requests.Count);
                Display.SetStatus(AssetDeliveryStatus.Retrieving, AssetDeliveryErrorCode.NoError);
                yield return(null);
            }

            var allSucceeded = true;

            foreach (var request in _batchRequest.Requests.Values)
            {
                if (request.Error != AssetDeliveryErrorCode.NoError)
                {
                    Display.SetStatus(request.Status, request.Error);
                    allSucceeded = false;
                    break;
                }
            }

            if (allSucceeded)
            {
                Display.SetProgress(1f);
                Display.SetStatus(AssetDeliveryStatus.Available, AssetDeliveryErrorCode.NoError);
            }

            _requestInProgress = false;
        }