/// <summary> /// 把资源放到池子中 /// </summary> /// <param name="obj"></param> /// <returns></returns> public virtual bool Push(I_PoolObjectAbility obj) { if (obj == null) { LogManager.Error("对象池[{0}]回收null的资源错误", _factory.FactoryName); return(false); } if (!obj.IsUse) { LogManager.Error("对象池[{0}]回收资源错误[{1}]错误,正在使用中", _factory.FactoryName, obj.ObjectName); return(false); } if (_maxCount > 0 && _in.Count > _maxCount) { LogManager.Log("超过对象池大小,立马释放对象"); obj.OnRecycled(); obj = null; return(false); } _factory.ExtraOpertion(obj); obj.IsUse = false; _in.Add(obj); _out.Remove(obj); obj.OnPush(); return(true); }
public override void ExtraOpertion(I_PoolObjectAbility ability) { PoolDefaultGameObject po = ability as PoolDefaultGameObject; if (po == null) { LogManager.Error("对象池工场Push的内容为空"); return; } GameObjectHelper.SetParent(po.gameObject, _factoryGoRootTrans); }
public override void ExtraOpertion(I_PoolObjectAbility ability) { PoolDefaultRectTransform po = ability as PoolDefaultRectTransform; if (po == null) { LogManager.Error("对象池工场Push的内容为空或者类型不对"); return; } po.SetParent(_factoryGoRoot.transform); }
public AudioUnit _internal_play(SoundCnf info, float fade_in, float fade_out) { I_PoolObjectAbility object_ability = _pool_factory.Pop(); AudioUnit unit = object_ability as AudioUnit; if (unit != null) { _list.Add(unit); unit.Play(info, SoundVolume, fade_in, fade_out); } else { LogManager.Error("_internal_play Error"); } return(unit); }
public virtual T Pop <T>(string prefabName) where T : class, I_PoolObjectAbility { PoolBase poolBase; _map.TryGetValue(prefabName, out poolBase); if (poolBase == null) { poolBase = GetDefaultFactory(prefabName); } I_PoolObjectAbility po = poolBase.Pop(); T t = po as T; if (t == null) { LogManager.Error("po:[{0}],[{1}]", po, prefabName); } return(t); }
public virtual bool Push(I_PoolObjectAbility po) { PoolBase poolBase; if (string.IsNullOrEmpty(po.ObjectName)) { LogManager.Error("名字为空"); return(false); } _map.TryGetValue(po.ObjectName, out poolBase); if (poolBase == null) { LogManager.Error("子类缓存管理不存在"); return(false); } return(poolBase.Push(po)); }
public override void ExtraOpertion(I_PoolObjectAbility ability) { }
public override I_PoolObjectAbility Create() { I_PoolObjectAbility po = Activator.CreateInstance(_type) as I_PoolObjectAbility; return(po); }
public abstract void ExtraOpertion(I_PoolObjectAbility ability);