private void UnloadAssetBundle(string abName) { // 卸载本包 ABItem item = null; m_loadedABs.TryGetValue(abName, out item); if (item != null) { item.Release(); Debug.Log(string.Format("释放AB包:{0} 引用: {1}", abName, item.ReferencedCount)); if (item.ReferencedCount <= 0) { item.UnLoad(); m_loadedABs.Remove(abName); GameMgr.m_ObjectMgr.Recycle <ABItem>(item); Debug.Log(string.Format("删除AB包:{0}", abName)); } } // 卸载依赖 string[] dependence = null; m_ABToDependence.TryGetValue(abName, out dependence); if (dependence != null && dependence.Length > 0) { for (int i = 0; i < dependence.Length; i++) { UnloadAssetBundle(dependence[i]); } } }
public void UnloadAB(string name) { ABItem item = null; var crc = Crc32.GetCrc32(name); if (abItemDict.TryGetValue(crc, out item) && item != null) { item.Release(); if (item.RefCount > 0) { return; } abItemPool.Recycle(item); abItemDict.Remove(crc); } else { Debug.LogError($"无法释放AB:{name}"); } }