private void RemoveEvent(GameObject go) { if (delayRecycleEvents.ContainsKey(go)) { DelayRecycleEvent eventDelay = delayRecycleEvents[go]; eventDelay.Release(); delayRecycleEvents.Remove(go); } }
/// <summary> /// 延迟回收 /// </summary> /// <param name="go"></param> /// <param name="delaySeconds"></param> public void RecycleAfterDelay(GameObject go, float delaySeconds) { if (go == null) { return; } if (delaySeconds > 0 && pools.ContainsKey(go.name)) { if (!delayRecycleEvents.ContainsKey(go)) { DelayRecycleEvent delayRecycleEvent = new DelayRecycleEvent(go, delaySeconds); delayRecycleEvent.delayRecycle += DespawnAfterDelay; delayRecycleEvents.Add(go, delayRecycleEvent); } else { delayRecycleEvents[go].Release(); delayRecycleEvents[go] = null; DelayRecycleEvent delayRecycleEvent = new DelayRecycleEvent(go, delaySeconds); delayRecycleEvent.delayRecycle += DespawnAfterDelay; delayRecycleEvents[go] = delayRecycleEvent; } ObjectPool pool = GetObjectPoolByName(go); if (delayObjectPools.ContainsKey(pool)) { delayObjectPools[pool].Add(go); } else { delayObjectPools.Add(pool, new List <GameObject>() { go }); } } else { Recycle(go); } }
private void DespawnAfterDelay(GameObject go, DelayRecycleEvent eventDelay) { Recycle(go); }