IEnumerator _LoadAssetBundleAsync(string assetBundleName, LoadAssetBundleAsyncDelegate callback) { assetBundleName = assetBundleName.ToLower(); assetBundleName += ".unity3d"; if (s_AssetBundleDependencies.ContainsKey(assetBundleName)) { string[] dependencies = s_AssetBundleDependencies [assetBundleName]; foreach (string dependency in dependencies) { if (s_LoadedAssetBundles.ContainsKey(dependency)) { s_LoadedAssetBundles [dependency].refCount++; } else { // 加载 //string filename = Path.Combine(Application.persistentDataPath, dependency); string filename = Path.Combine(AssetBundleLoader.STREAMING_ASSET_PATH, dependency); WWW www = new WWW(filename); yield return(www); if (www.error == null) { AssetBundle ab = AssetBundle.LoadFromMemory(www.bytes); Debug.LogFormat("AssetBundle(Dependency) loaded : {0}", dependency); LoadedAssetBundle loadedAssetBundle = new LoadedAssetBundle(ab); s_LoadedAssetBundles.Add(dependency, loadedAssetBundle); www.Dispose(); continue; } else { Debug.LogWarning(www.error); www.Dispose(); yield break; } } } } if (s_LoadedAssetBundles.ContainsKey(assetBundleName)) { s_LoadedAssetBundles [assetBundleName].refCount++; callback(s_LoadedAssetBundles [assetBundleName].assetBundle); } else { // 加载 //string filename = Path.Combine(Application.persistentDataPath, assetBundleName); string filename = Path.Combine(AssetBundleLoader.STREAMING_ASSET_PATH, assetBundleName); WWW www = new WWW(filename); yield return(www); if (www.error == null) { AssetBundle ab = AssetBundle.LoadFromMemory(www.bytes); Debug.LogFormat("AssetBundle loaded : {0}", assetBundleName); LoadedAssetBundle loadedAssetBundle = new LoadedAssetBundle(ab); s_LoadedAssetBundles.Add(assetBundleName, loadedAssetBundle); callback(s_LoadedAssetBundles [assetBundleName].assetBundle); www.Dispose(); } else { Debug.LogWarning(www.error); www.Dispose(); callback(null); } } }
// load assetbuddle Async // ref++ public void LoadAssetBundleAsync(string assetBundleName, LoadAssetBundleAsyncDelegate callback) { StartCoroutine(_LoadAssetBundleAsync(assetBundleName, callback)); }