Example #1
0
    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]);
            }
        }
    }
Example #2
0
        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}");
            }
        }