//加载指定ab包名的ab包 public AssetBundle LoadAssetBundle(string abName) { AssetBundleItem abItem = null; uint crc = CrcHelper.StringToCRC32(abName); //AB包名字创建crc if (!m_assetBundleItemDict.TryGetValue(crc, out abItem) || abItem == null) { AssetBundle assetBundle = null; string abFullPath = ABPathConfig.AssetBundleBuildTargetPath + "/" + abName; if (File.Exists(abFullPath)) { assetBundle = AssetBundle.LoadFromFile(abFullPath); } if (assetBundle == null) { Debug.Log("Load AssetBundle Error: " + abFullPath); return(null); } abItem = m_assetBundleItemPool.Spawn(true); abItem.assetBundle = assetBundle; abItem.refCount++; m_assetBundleItemDict.Add(crc, abItem); } else { abItem.refCount++; } return(abItem.assetBundle); }
//卸载指定ab包名的ab包 public void UnLoadAssetBundle(string abName) { AssetBundleItem abItem = null; uint crc = CrcHelper.StringToCRC32(abName); if (m_assetBundleItemDict.TryGetValue(crc, out abItem) && abItem != null) { abItem.refCount--; if (abItem.refCount <= 0 && abItem.assetBundle != null) { abItem.assetBundle.Unload(true); abItem.Reset(); m_assetBundleItemPool.Recycle(abItem); m_assetBundleItemDict.Remove(crc); } } }