private static void InitBundles(Action onSuccess, Action <string> onError) { Bundles.OverrideBaseDownloadingUrl += Bundles_overrideBaseDownloadingURL; Bundles.Initialize(() => { var asset = LoadAsync(Assets.AssetsManifestAsset, typeof(AssetManifest)); asset.completed += obj => { var manifest = obj.asset as AssetManifest; if (manifest == null) { if (onError != null) { onError.Invoke("manifest == null"); } return; } downloadURL = Path.Combine(manifest.downloadURL, platform) + Path.DirectorySeparatorChar; Bundles.activeVariants = manifest.activeVariants; _bundles = manifest.bundles; var dirs = manifest.dirs; _bundleAssets.Clear(); for (int i = 0, max = manifest.assets.Length; i < max; i++) { var item = manifest.assets [i]; _bundleAssets [string.Format("{0}/{1}", dirs [item.dir], item.name)] = item.bundle; } if (onSuccess != null) { onSuccess.Invoke(); } obj.Release(); }; }, onError); }
public static void Initialize(Action onSuccess, Action <string> onError) { var instance = FindObjectOfType <Assets>(); if (instance == null) { instance = new GameObject("Assets").AddComponent <Assets>(); DontDestroyOnLoad(instance.gameObject); } if (string.IsNullOrEmpty(Utility.dataPath)) { Utility.dataPath = Application.streamingAssetsPath; } Log(string.Format("Init->assetBundleMode {0} | dataPath {1}", Utility.assetBundleMode, Utility.dataPath)); if (Utility.assetBundleMode) { updatePath = Utility.updatePath; var platform = Utility.GetPlatform(); var path = Path.Combine(Utility.dataPath, Path.Combine(Utility.AssetBundles, platform)) + Path.DirectorySeparatorChar; Bundles.OverrideBaseDownloadingUrl += Bundles_overrideBaseDownloadingURL; Bundles.Initialize(path, platform, () => { var asset = LoadAsync(Utility.AssetsManifestAsset, typeof(AssetsManifest)); asset.completed += obj => { var manifest = obj.asset as AssetsManifest; if (manifest == null) { if (onError != null) { onError("manifest == null"); } return; } if (string.IsNullOrEmpty(Utility.downloadURL)) { Utility.downloadURL = manifest.downloadURL; } Bundles.activeVariants = manifest.activeVariants; _bundles = manifest.bundles; var dirs = manifest.dirs; _bundleAssets = new Dictionary <string, int>(manifest.assets.Length); for (int i = 0, max = manifest.assets.Length; i < max; i++) { var item = manifest.assets[i]; _bundleAssets[string.Format("{0}/{1}", dirs[item.dir], item.name)] = item.bundle; } if (onSuccess != null) { onSuccess(); } obj.Release(); }; }, onError); } else { if (onSuccess != null) { onSuccess(); } } }