// public bool Store( GameObject go ) // { // if ( go == null ) // return false; // PoolCacheInfo poolCacheInfo = null; // ObjectCache objCache = go.GetComponent<ObjectCache>(); // if ( objCache == null || !objCache.isUsing ) // return false; // if ( objCache != null ) // pools_.TryGetValue( objCache.objKey, out poolCacheInfo ); // if ( poolCacheInfo != null ) // { // poolCacheInfo.Store( go ); // return true; // } // else // return false; // } public bool Store <T>(T go, bool failedFocusDestroy = false) where T : ObjectCache { bool result = false; if (go != null) { PoolCacheInfo poolCacheInfo = null; ObjectCache objCache = null; objCache = (ObjectCache)go; if (objCache != null && objCache.isUsing) { if (objCache != null) { pools_.TryGetValue(objCache.objKey, out poolCacheInfo); } if (poolCacheInfo != null) { poolCacheInfo.Store(go); result = true; } } if (!result && failedFocusDestroy && go.gameObject != null) { Object.Destroy(go.gameObject); } } return(result); }
public ObjectCache ocpNewDefault(string key, GameObject prefab, Transform parent, Vector3 localposition) { PoolCacheInfo pci = null; if (!pools_.TryGetValue(key, out pci) || pci.objects.Count == 0) { pci = new PoolCacheInfo(key, prefab, mTrans_); pools_[key] = pci; } return((ObjectCache)pci.New(parent, localposition)); }
public void ocpRelease() { PoolCacheInfo[] cacheInfos = new PoolCacheInfo[pools_.Count]; pools_.Values.CopyTo(cacheInfos, 0); for (int i = cacheInfos.Length - 1; i >= 0; i--) { cacheInfos[i].Release(); cacheInfos[i] = null; } pools_.Clear(); }