/// <summary> /// 载入AssetBundle资源 /// </summary> public AssetBundle LoadAssetBundle(string bundle) { AssetBundle ab; // 尝试获取已加载过的AssetBundle if (AssetBundleMap.TryGetValue(bundle, out ab) && ab != null) { return(ab); } try { // 载入assetBundle ab = AssetBundle.LoadFromFile(ConfigMgr.ASSETBUNDLES_PATH + "/" + bundle); // 添加到资源管理列表中 AssetBundleMap[bundle] = ab; } catch (Exception e) { // 给出异常提示信息 NIDebug.LogException(e); } // 返回资源 return(ab); }
public GameObject LoadAsset(string assetBundleName, string assetName) { if (!assetBundleMaps.ContainsKey(assetBundleName)) { return(null); } AssetBundleMap map = assetBundleMaps[assetBundleName]; return(map.assetBundle.LoadAsset <GameObject>(assetName)); }
public object LoadAssetByType(string assetBundleName, string assetName, Type t) { if (!assetBundleMaps.ContainsKey(assetBundleName)) { return(null); } AssetBundleMap map = assetBundleMaps[assetBundleName]; return(map.assetBundle.LoadAsset(assetName, t)); }
private IEnumerator LoadAsset(string assetBundleName, string assetName, Action <GameObject> callback) { if (!assetBundleMaps.ContainsKey(assetBundleName)) { yield break; } AssetBundleMap map = assetBundleMaps[assetBundleName]; AssetBundleRequest abq = map.assetBundle.LoadAssetAsync <GameObject>(assetName); yield return(abq); callback(abq.asset as GameObject); UnLoadAssetBundle(assetBundleName); }
public void UnLoadAssetBundle(string assetBundleName) { if (!assetBundleMaps.ContainsKey(assetBundleName)) { return; } AssetBundleMap map = assetBundleMaps[assetBundleName]; if (map.Unload()) { assetBundleMaps.Remove(assetBundleName); } // 尝试卸载依赖 foreach (string a in map.dependencies) { UnLoadAssetBundle(a); } }
public void LoadAssetBundle(string assetBundleName) { if (assetBundleMaps.ContainsKey(assetBundleName)) { AssetBundleMap map = assetBundleMaps[assetBundleName]; map.count++; foreach (string s in map.dependencies) { if (assetBundleMaps.ContainsKey(s)) { AssetBundleMap map0 = assetBundleMaps[s]; map0.count++; } } return; } string[] dependencies = manifest.GetAllDependencies(assetBundleName); for (int i = 0; i < dependencies.Length; i++) { if (assetBundleMaps.ContainsKey(dependencies[i])) { AssetBundleMap map = assetBundleMaps[dependencies[i]]; map.count++; continue; } assetBundleMaps.Add(dependencies[i], new AssetBundleMap { assetBundleName = dependencies[i], assetBundle = AssetBundle.LoadFromFile(pathPrefix + dependencies[i]), dependencies = manifest.GetAllDependencies(dependencies[i]), count = 1 }); } AssetBundle assetBundle = AssetBundle.LoadFromFile(pathPrefix + assetBundleName); assetBundleMaps.Add(assetBundleName, new AssetBundleMap { assetBundleName = assetBundleName, assetBundle = assetBundle, dependencies = dependencies, count = 1 }); }
private IEnumerator LoadAssetBundle(string assetBundleName, Action callback) { if (assetBundleMaps.ContainsKey(assetBundleName)) { AssetBundleMap map = assetBundleMaps[assetBundleName]; map.count++; foreach (string s in map.dependencies) { if (assetBundleMaps.ContainsKey(s)) { AssetBundleMap map0 = assetBundleMaps[s]; map0.count++; } } callback(); yield break; } string[] dependencies = manifest.GetAllDependencies(assetBundleName); if (isShowProgress && controller != null) { // 如果要显示进度 , 则对进度条进行初始化 controller.InitSlider(dependencies.Length + 1); controller.UpdateInfo("加载依赖资源......"); } for (int i = 0; i < dependencies.Length; i++) { if (assetBundleMaps.ContainsKey(dependencies[i])) { AssetBundleMap map = assetBundleMaps[dependencies[i]]; map.count++; } else { AssetBundleCreateRequest abcr0 = AssetBundle.LoadFromFileAsync(pathPrefix + dependencies[i]); yield return(abcr0); assetBundleMaps.Add(dependencies[i], new AssetBundleMap { assetBundleName = dependencies[i], assetBundle = abcr0.assetBundle, dependencies = manifest.GetAllDependencies(dependencies[i]), count = 1 }); } if (isShowProgress && controller != null) { // 更新加载进度 controller.UpdateProgress(1); } } if (isShowProgress && controller != null) { controller.UpdateInfo("依赖资源加载完成"); } AssetBundleCreateRequest abcr = AssetBundle.LoadFromFileAsync(pathPrefix + assetBundleName); yield return(abcr); assetBundleMaps.Add(assetBundleName, new AssetBundleMap { assetBundleName = assetBundleName, assetBundle = abcr.assetBundle, dependencies = dependencies, count = 1 }); if (isShowProgress && controller != null) { // 更新加载进度 controller.UpdateProgress(1); controller.UpdateInfo("场景实例化中......"); } callback(); }