private async UniTask LoadBundles(AssetBundlesConfig config)
        {
            if (config?.AssetBundleInfos != null)
            {
                float progressPerBundle = 1.0f / config.AssetBundleInfos.Length;

                for (int assetBundleIndex = 0; assetBundleIndex < config.AssetBundleInfos.Length; assetBundleIndex++)
                {
                    AssetBundleInfo assetBundleInfo = config.AssetBundleInfos[assetBundleIndex];

                    float progressBase = assetBundleIndex * progressPerBundle;
                    float overallProgress;

                    UnityWebRequest request =
                        UnityWebRequestAssetBundle.GetAssetBundle(assetBundleInfo.Uri, assetBundleInfo.Version, 0);

                    IProgress <float> onProgress = Progress.Create <float>(progress =>
                    {
                        overallProgress = progressBase + (progress * progressPerBundle);
                        ReportLoadProgress(assetBundleInfo.Name, progress, overallProgress);
                    });

                    await request.SendWebRequest().ToUniTask(onProgress);

                    overallProgress = progressBase + progressPerBundle;
                    ReportLoadProgress(assetBundleInfo.Name, 1.0f, overallProgress);
                    assetBundles[assetBundleInfo.Name] = DownloadHandlerAssetBundle.GetContent(request);
                }

                ReportLoadComplete();
            }
        }
 public void LoadAssetBundles(AssetBundlesConfig config)
 {
     LoadBundles(config);
 }