public ITerrainEffectItem GetNewEffect(int effectId) { GameObject prefab; _dictEffects.TryGetValue(effectId, out prefab); if (null != prefab) { List <ITerrainEffectItem> list; _dictEffectPool.TryGetValue(effectId, out list); if (null == list) { list = new List <ITerrainEffectItem>(); _dictEffectPool.Add(effectId, list); } if (list.Count == 0) { TerrainEffectItem item = new TerrainEffectItem(); item.EffectId = effectId; item.EffectGo = Object.Instantiate(prefab); return(item); } else { ITerrainEffectItem item = list[0]; list.RemoveAt(0); return(item); } } return(null); }
public void ReleaseEffect(ITerrainEffectItem item) { List <ITerrainEffectItem> list; _dictEffectPool.TryGetValue(item.EffectId, out list); if (null == list) { list = new List <ITerrainEffectItem>(); _dictEffectPool.Add(item.EffectId, list); } list.Add(item); }
//Release Effect public void ReleaseEffect(ITerrainEffectItem item) { _effectPool.ReleaseEffect(item); }