/// <summary> /// 回收一个资源 /// </summary> protected void DestoryResourceItem(ResourceItem item, bool destoryCache = false) { if (item == null || item.RefCount > 0) { return; } if (!destoryCache) { m_NoRefrenceAssetMapList.InsertToHead(item); return; } if (!AssetDic.Remove(item.m_Crc)) { return; } m_NoRefrenceAssetMapList.Remove(item); //释放assetbundel引用 AssetBundleMgr.Instance.ReleaseAsset(item); //清空资源对应的对象池 ObjectPoolMgr.Instance.ClearPoolObject(item.m_Crc); if (item.m_Obj != null) { item.m_Obj = null; #if UNITY_EDITOR Resources.UnloadUnusedAssets(); #endif } }
/// <summary> /// 清除资源,需要删除的在AssetBundle里卸载,不需要删除的放到NoReferenceAssetMapList /// </summary> /// <param name="item"></param> /// <param name="is_destory"></param> protected void DestoryResourceItme(ResourceItem item, bool is_destory = false) { if (item == null || item.RefCount > 0) { return; } if (!is_destory) { m_NoReferenceAssetMapList.InsertToHead(item); return; } if (!AssetDic.Remove(item.m_Crc)) { return; } m_NoReferenceAssetMapList.Remove(item); //释放assetbundle引用 AssetBundleManager.Instance.ReleaseAsset(item); //清空对象池 ObjectManager.Instance.CleanObjectPoolByCrc(item.m_Crc); if (item.m_Obj != null) { item.m_Obj = null; #if UNITY_EDITOR //编译器下卸载资源 Resources.UnloadUnusedAssets(); #endif } }