public void ForceClearAll() { #if UNITY_EDITOR InPoolCounter.Clear(); OutOfPoolBundles.Clear(); #endif while (pools.GetEnumerator().MoveNext()) { var item = pools.GetEnumerator().Current; DestroyPool(item.Value); } pools.Clear(); }
private PrefabPool CreatePool(string assetName) { var pool = pools[assetName]; if (pool == null) { #if UNITY_EDITOR if (InPoolCounter.ContainsKey(assetName)) { InPoolCounter[assetName]++; } else { InPoolCounter.Add(assetName, 1); } #endif pool = new PrefabPool(assetName); pools.Add(assetName, pool); } return(pool); }
private void CheckAndDestoryPool(bool cleanPreloadPool) { var curTime = Time.time; if (curTime - lastCleanPoolTime > 1) { lastCleanPoolTime = curTime; } else { return; } cleanPreloadPool &= CleanPreloadPool; using (var removeList = TempList <string> .Alloc()) { while (pools.GetEnumerator().MoveNext()) { var item = pools.GetEnumerator().Current; if (item.Value.IsTemporaryPool || cleanPreloadPool) { if (item.Value.CanDestory() && curTime - item.Value.LastUsedTime > AutoCleanTime) { removeList.Add(item.Key); } } } for (var i = 0; i < removeList.Count; ++i) { #if UNITY_EDITOR InPoolCounter.Remove(removeList[i]); OutOfPoolBundles.Remove(removeList[i]); #endif var pool = pools[removeList[i]]; DestroyPool(pool); pools.Remove(removeList[i]); } } }