private IEnumerator PerformAsyncLoad(AssetAsyncRequest request)
        {
            AssetBundleRequest req = null;

            switch (request.assetRequestType)
            {
            case AssetRequestType.Part:
                for (int i = 0; i < request.assetTypeArray.Length; ++i)
                {
                    req = request.assetBundleInfoNode.LoadAssetAsync(request.assetNameArray[i], request.assetTypeArray[i]);
                    yield return(req);

                    if (req.asset == null)
                    {
                        request.error = true;
                    }
                    else if (request.assetDic != null)
                    {
                        request.assetDic[request.assetNameArray[i]] = req.asset;
                    }
                }
                break;

            case AssetRequestType.Part_SameType:
                for (int i = 0; i < request.assetTypeArray.Length; ++i)
                {
                    req = request.assetBundleInfoNode.LoadAssetAsync(request.assetNameArray[i], request.assetType);
                    yield return(req);

                    if (req.asset == null)
                    {
                        request.error = true;
                    }
                    else if (request.assetDic != null)
                    {
                        request.assetDic[request.assetNameArray[i]] = req.asset;
                    }
                }
                break;

            case AssetRequestType.All:
                req = request.assetBundleInfoNode.LoadAllAssetsAsync();
                yield return(req);

                if (req.allAssets != null)
                {
                    if (request.assetDic != null)
                    {
                        for (int j = 0; j < req.allAssets.Length; j++)
                        {
                            request.assetDic[req.allAssets[j].name] = req.allAssets[j];
                        }
                    }
                }
                else
                {
                    request.error = true;
                }
                break;

            default:
                break;
            }

            request.AssetsReady();

            asyncLoadingList.Remove(request);
        }