void LateUpdate() { if (AutoCull && Time.time - mLastCullingTime > CullingSpeed) { mLastCullingTime = Time.time; Cull(true); } delayDespawn item = null; for (int i = 0; i < mDealyDespawn.Count; ++i) { item = mDealyDespawn[i]; if (item._obj == null) { mDealyDespawn.Remove(item); return; } if (item._ft < Time.time) { DespawnItem(item._obj); return; } } }
public static void Despawn(GameObject item, float t) { if (item) { SmartPool P = GetPoolByItem(item); if (P != null) { bool bFind = false; P.mDealyDespawn.Find(objItem => { if (objItem._obj == item) { objItem._ft = Mathf.Min(objItem._ft, Time.time + t); bFind = true; return(true); } return(false); }); if (!bFind) { delayDespawn delayItem = new delayDespawn(); delayItem._ft = Time.time + t; delayItem._obj = item; P.mDealyDespawn.Add(delayItem); } } else { GameObject.Destroy(item, t); } } }
public static void Despawn(GameObject item,float t) { if (item) { SmartPool P = GetPoolByItem(item); if (P != null) { bool bFind = false; P.mDealyDespawn.Find(objItem => { if (objItem._obj == item) { objItem._ft = Mathf.Min(objItem._ft, Time.time + t); bFind = true; return true; } return false; }); if (!bFind) { delayDespawn delayItem = new delayDespawn(); delayItem._ft = Time.time + t; delayItem._obj = item; P.mDealyDespawn.Add(delayItem); } } else GameObject.Destroy(item,t); } }