/// <summary> /// 卸载 /// </summary> /// <param name="name"></param> public void UnloadAsset(string name, bool isUnloadIsUsing = false) { var path = GetExistPath(name); if (path != null) { var res = manifest.Manifest.GetDirectDependencies(path); //创建一个队列 Queue <string> resQue = new Queue <string>(); foreach (var r in res) { if (AssetbundleMap.ContainsKey(r)) { resQue.Enqueue(r); } } resQue.Enqueue(path); foreach (var r in resQue) { if (AssetbundleMap.ContainsKey(r)) { if (isUnloadIsUsing) { AssetbundleMap[r].assetBundle.Unload(true); AssetbundleMap.Remove(r); } else { AssetbundleMap[r].Unuse(); } } } //移除无用的assetbundle var keys = new List <string>(AssetbundleMap.Keys); foreach (var k in keys) { if (AssetbundleMap[k].referenceCount <= 0) { AssetbundleMap.Remove(k); } } } else { BDebug.Log("路径不存在"); } }