IEnumerator LoadAssetBundle(AssetBundleContainer bundle, string url, int version, uint crc) { WWW www = null; if (0 <= version) { www = WWW.LoadFromCacheOrDownload(url, version, crc); } else { www = new WWW(url); } while (!www.isDone) { bundle.Progress = www.progress; yield return(9); } if (www.error != null) { Debug.LogError(string.Format("AssetBundleManager:\n\tload \"{0}\" error:{1}", url, www.error)); bundle.Initialize(url, null, null); bundle.SetError(www.error); } else { BundleAssetInfo[] list = null; if (!www.assetBundle.isStreamedSceneAssetBundle) { if (Application.HasProLicense()) { #if UNITY_5 var request = www.assetBundle.LoadAssetAsync <BundleAssetList>("list"); #else var request = www.assetBundle.LoadAsync("list", typeof(BundleAssetList)); #endif yield return(request); var bal = request.asset as BundleAssetList; list = bal.Assets; } else { #if UNITY_5 var bal = www.assetBundle.LoadAsset <BundleAssetList>("list"); #else var bal = www.assetBundle.Load("list", typeof(BundleAssetList)) as BundleAssetList; #endif list = bal.Assets; } } else { var paths = www.assetBundle.GetAllScenePaths(); list = new BundleAssetInfo[paths.Length]; for (int i = 0; i < paths.Length; ++i) { list[i] = new BundleAssetInfo(paths[i]); } } if (list != null) { bundle.Initialize(url, www.assetBundle, list); } else { //Debug.LogWarning( "There is no BundleAssetList in " + www.url ); bundle.Initialize(url, www.assetBundle, null); } } if (www != null) { www.Dispose(); } }
IEnumerator LoadAssetBundle(AssetBundleContainer bundle, string url, int version, uint crc) { WWW www = null; var path = Path.Combine(Path.GetDirectoryName(url), url.Substring(AssetBundleLoader.GetStreamingAssetsURL("").Length).Replace('/', '_')); path = path.Replace("\\", "/"); if (0 <= version) { www = WWW.LoadFromCacheOrDownload(path, version, crc); } else { www = new WWW(path); } yield return(www); if (www.error != null) { Debug.Log(string.Format("AssetBundleManager:\n\tload \"{0}\" error:{1}", path, www.error)); bundle.Initialize(path, null, null); bundle.SetError(www.error); } else { BundleAssetList list = null; if (Application.HasProLicense()) { #if UNITY_5 var request = www.assetBundle.LoadAssetAsync <BundleAssetList>("list"); #else var request = www.assetBundle.LoadAsync("list", typeof(BundleAssetList)); #endif yield return(request); list = request.asset as BundleAssetList; } else { #if UNITY_5 list = www.assetBundle.LoadAsset <BundleAssetList>("list"); #else list = www.assetBundle.Load("list", typeof(BundleAssetList)) as BundleAssetList; #endif } if (list) { bundle.Initialize(path, www.assetBundle, list.Assets); } else { //Debug.LogWarning( "There is no BundleAssetList in " + www.url ); bundle.Initialize(path, www.assetBundle, null); } } if (www != null) { www.Dispose(); } }