/// <summary> /// 根据名字 加载单个AssetBundle /// </summary> /// <param UIName="name"></param> /// <returns></returns> private AssetBundle LoadAssetBundle(string name) { AssetBundleItem item = null; uint crc = Crc32.GetCrc32(name); if (!_AssetBundleCacheDic.TryGetValue(crc, out item)) { AssetBundle assetBundle = null; string fullPath = AssetBundlePath + "/" + name; if (File.Exists(fullPath)) { assetBundle = AssetBundle.LoadFromFile(fullPath); } if (assetBundle == null) { Debug.LogError("Load AsetBundle Error: " + fullPath); } item = _AssetBundleItemPool.Spawn(true); item.assetBundle = assetBundle; item.RefCount++; _AssetBundleCacheDic.Add(crc, item); } else { item.RefCount++; } return(item.assetBundle); }
private void UnLoadAssetBundle(string name) { AssetBundleItem item = null; uint crc = Crc32.GetCrc32(name); if (_AssetBundleCacheDic.TryGetValue(crc, out item) && item != null) { item.RefCount--; if (item.RefCount <= 0 && item.assetBundle != null) { item.assetBundle.Unload(true); item.Rest(); _AssetBundleItemPool.Recycle(item); _AssetBundleCacheDic.Remove(crc); } } }