示例#1
0
    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);
                }
            }
        }
    }
示例#2
0
    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();
    }
示例#3
0
    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();
    }
示例#4
0
    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;
        }
示例#6
0
    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);
        }
    }
示例#7
0
    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;
    }
示例#8
0
    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;
    }
示例#9
0
 /// <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);
 }
示例#10
0
    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();
    }