示例#1
0
        public void RemoveEffectObj(IEffect effect)
        {
            if (effect == null)
            {
                return;
            }
            m_mapEffect.Remove(effect.code);
            List <IEffect> objList    = null;
            string         strObjName = effect.GetResName();

            if (m_lstCacheEffectObj.Contains(strObjName))
            {
                if (effect.Node == null)
                {
                    effect.Destroy();
                    Utility.Log.Error("RemoveEffect error {0}", effect.GetResName());
                    return;
                }
                if (!m_mapEffectObjIdle.TryGetValue(effect.GetResName(), out objList)) // 缓存池里面有数据
                {
                    objList = new List <IEffect>();
                    m_mapEffectObjIdle.Add(effect.GetResName(), objList);
                }
                effect.Node.SetActive(false);
                effect.IdleStartTime = Time.realtimeSinceStartup;
                objList.Add(effect);
                effect.SetParent(m_ObjPool);
            }
            else
            {
                effect.Destroy();
                effect = null;
            }
        }