public static void DeleteSkinAsync(int SkinID, System.Action <Skin> CallBack, bool NotReleaseFromCache = false) { Skin sk = null; SkinAsyncLoadingObj obj = null; m_AsyncLoadSkinRequestTable.TryGetValue(SkinID, out obj); //首先看是不是已经加载出来了 if (m_SkinMap.TryGetValue(SkinID, out sk)) { DeleteSkinAsync(ref sk, CallBack, NotReleaseFromCache); } //没有加载出来 else { if (null != obj) { int refCount = --obj.ReferenceCount; if (refCount <= 0) { RemoveAllCallBack(SkinID); AssetBundleManager.DeleteAssetsAsync(ref obj.loadingResNode, ResLoadCallBack, ImmdieateUnLoadSkin); } else { RemoveCallBack(SkinID, CallBack); } } } }
public void Clear() { if (!IsValidSpiteSettings()) { return; } foreach (ResNode res in currSpriteResNode) { ResNode temp = res; if (null == temp) { continue; } if (!temp.isAsync) { AssetBundleManager.DeleteAssets(ref temp, true); } else { AssetBundleManager.DeleteAssetsAsync(ref temp, ResLoadCallBack, true); } } currSpriteResNode.Clear(); m_SpriteList.Clear(); }
public void ResetMemory() { bOptimitzedMenory = true; currFadeMatTable = null; if (OtherLoadedResTable.Count <= 0 || AlwaysUnOptimitzedMemory) { return; } foreach (SceneMaterialConfig r in ConfigDataList) { if (!r.SharedMaterial) { continue; } if (UnOptimitzedMaterials.ContainsKey(r.SharedMaterial)) { int refCount = --UnOptimitzedMaterials[r.SharedMaterial]; if (refCount <= 0) { foreach (SceneTextureConfigData rt in r.TextureConfigList) { if (!rt.ShaderKeyWordName.Equals(MainTexKeyWorld)) { Material orginalInstanceMat = null; Orginal_AlphaInstanceTable.TryGetValue(r.SharedMaterial, out orginalInstanceMat); if (rt.ShaderKeyWordVariantName.Count != 0) { foreach (string var in rt.ShaderKeyWordVariantName) { if (orginalInstanceMat) { orginalInstanceMat.DisableKeyword(var); } r.SharedMaterial.DisableKeyword(var); } } if (orginalInstanceMat) { orginalInstanceMat.SetTexture(rt.ShaderKeyWordName, null); } r.SharedMaterial.SetTexture(rt.ShaderKeyWordName, null); } } ResetEmissonTexture(r.SharedMaterial); ResetSurfaceDefineTexture(r.SharedMaterial); UnOptimitzedMaterials.Remove(r.SharedMaterial); } } } foreach (ResNode res in OtherLoadedResTable.Values) { ResNode temp = res; AssetBundleManager.DeleteAssetsAsync(ref temp, this, false); } OtherLoadedResTable.Clear(); }
private void UnLoadResourceHandle(LightingEffectResHandle instance) { if (null == instance) { return; } ResNode temp2 = instance.prefabResNode; instance.Clear(); AssetBundleManager.DeleteAssetsAsync(ref temp2, OnHandleResLoadFinish, true); }
public void Clear() { if (!bInit) { return; } Effect.EffectNode.UnResigterEffectQualityChange(OnEffectQualityChange); int cout = EffectList.Count; for (int i = 0; i < cout; i++) { ResNode temp = EffectList[i].res; AssetBundleManager.DeleteAssetsAsync(ref temp, ResLoadCallBack, true); } EffectList.Clear(); bInit = false; }
private static Skin BuildSkin(SkinModelInfo info, ResNode obj, bool isAsync) { Skin sk = null; if (!m_SkinMap.TryGetValue(info.nSkinID, out sk)) { sk = new Skin(); sk.nSkinID = info.nSkinID; m_SkinMap.Add(info.nSkinID, sk); } if (obj != null) { sk.SkinType = info.SkinType; sk.fSkinScale = info.fSkinScale; sk.ResSkinObj = obj; sk.isStaticSkin = info.strPatch.Contains(staticSkinPatch); sk.isAsync = isAsync; if (!CheckSkinValid(sk)) { if (!isAsync) { AssetBundleManager.DeleteAssets(ref obj, ImmdieateUnLoadSkin); } else { AssetBundleManager.DeleteAssetsAsync(ref obj, ResLoadCallBack, ImmdieateUnLoadSkin); } sk.isValid = false; obj = null; return(sk); } sk.isValid = true; obj = null; return(sk); } else { sk.isValid = false; Debug.LogWarning("加载皮肤模型失败,ID:" + info.nSkinID + ",路径:" + info.strPatch + ",请[--策划--]检查配置"); return(null); } }
private static void UnLoadSkinRes(ref Skin sk) { if (null == sk) { return; } int SkinID = sk.nSkinID; bool isAsync = sk.isAsync; ResNode res = sk.ResSkinObj; sk.Clear(true); if (isAsync) { AssetBundleManager.DeleteAssetsAsync(ref res, ResLoadCallBack, ImmdieateUnLoadSkin); } else { AssetBundleManager.DeleteAssets(ref res, ImmdieateUnLoadSkin); } sk = null; }
public void Clear() { if (!m_Valid) { return; } bPlay = false; m_Config = null; //顺序不能乱 StopAllCoroutines(); if (m_AudioInstance) { m_AudioInstance.clip = null; m_AudioInstance.outputAudioMixerGroup = null; m_AudioInstance.Stop(); m_AudioInstance.volume = orginalVolume; } //删除资源 if (bAsyncLoad) { AssetBundleManager.DeleteAssetsAsync(ref m_ResNode, this, false); } else { AssetBundleManager.DeleteAssets(ref m_ResNode, false); } m_entityID = -1; m_ResNode = null; m_AudioInstance = null; m_host = null; currPlayTimes = 0; isFinish = true; m_Valid = false; bAsyncLoad = true; }
/// <summary> /// 移除异步创建的Sprite /// </summary> /// <param name="_resNode">节点信息</param> /// <param name="_callBack">回调</param> public void DeleteSprite(ResNode _resNode, System.Action <ResConfigData, ResNode, System.Object> _callBack) { AssetBundleManager.DeleteAssetsAsync(ref _resNode, _callBack, true); }
public void ClearMemory() { foreach (SceneMaterialConfig r in ConfigDataList) { if (!r.SharedMaterial) { continue; } if (UnOptimitzedMaterials.ContainsKey(r.SharedMaterial)) { int refCount = --UnOptimitzedMaterials[r.SharedMaterial]; if (refCount <= 0) { foreach (SceneTextureConfigData rt in r.TextureConfigList) { if (rt.ShaderKeyWordVariantName.Count != 0) { foreach (string variant in rt.ShaderKeyWordVariantName) { r.SharedMaterial.DisableKeyword(variant); } } r.SharedMaterial.SetTexture(rt.ShaderKeyWordName, null); } UnOptimitzedMaterials.Remove(r.SharedMaterial); ResetEmissonTexture(r.SharedMaterial); ResetSurfaceDefineTexture(r.SharedMaterial); } } else { foreach (SceneTextureConfigData rt in r.TextureConfigList) { if (rt.ShaderKeyWordVariantName.Count != 0) { foreach (string variant in rt.ShaderKeyWordVariantName) { r.SharedMaterial.DisableKeyword(variant); } } r.SharedMaterial.SetTexture(rt.ShaderKeyWordName, null); } UnOptimitzedMaterials.Remove(r.SharedMaterial); ResetEmissonTexture(r.SharedMaterial); ResetSurfaceDefineTexture(r.SharedMaterial); } } foreach (ResNode res in OtherLoadedResTable.Values) { ResNode temp = res; AssetBundleManager.DeleteAssetsAsync(ref temp, this, true); } OtherLoadedResTable.Clear(); foreach (ResNode res in MainTexLoadedResTable.Values) { ResNode temp = res; AssetBundleManager.DeleteAssets(ref temp, true); } MainTexLoadedResTable.Clear(); ConfigDataList.Clear(); }