Exemple #1
0
 private void RemoveEvent(GameObject go)
 {
     if (delayRecycleEvents.ContainsKey(go))
     {
         DelayRecycleEvent eventDelay = delayRecycleEvents[go];
         eventDelay.Release();
         delayRecycleEvents.Remove(go);
     }
 }
Exemple #2
0
    /// <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);
        }
    }
Exemple #3
0
 private void DespawnAfterDelay(GameObject go, DelayRecycleEvent eventDelay)
 {
     Recycle(go);
 }