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