private void PoolsFromEditorInitialization() { for (int i = 0; i < preGenParamsForPools.Count; i++) { PoolParams poolParams = preGenParamsForPools[i]; if (poolParams.poolHolder == null) { GameObject poolHolderObject = new GameObject(poolParams.prefab.name + " Objects Pool"); poolHolderObject.transform.parent = transform; poolParams.poolHolder = poolHolderObject.transform; } CreatePool(poolParams.prefab, poolParams.poolSize, poolParams.canExpand, poolParams.poolHolder); } }
public ObjectPool(PoolParams poolParams) { this.prefab = poolParams.prefab; this.poolSize = Mathf.Max(2, poolParams.poolSize); this.canExpand = poolParams.canExpand; this.poolHolder = poolParams.poolHolder; if (poolSize == 0) { pool = new Queue <PooledObject>(); } else { pool = new Queue <PooledObject>(this.poolSize); } #if UNITY_EDITOR listShowPool = new List <PooledObject>(pool); #endif }
public void CreatePool(PoolParams poolParams) { KeyValuePair <int, string> poolKey = DictionaryKey(poolParams.prefab); if (!poolDictionary.ContainsKey(poolKey)) { dictionaryKeys.Add(poolKey); if (poolParams.poolHolder == null) { GameObject poolHolderObject = new GameObject(poolParams.prefab.name + " Objects Pool"); poolHolderObject.transform.parent = transform; poolParams.poolHolder = poolHolderObject.transform; } poolDictionary.Add(poolKey, new ObjectPool(poolParams)); for (int i = 0; i < poolParams.poolSize; i++) { AddObject(poolKey, poolParams.prefab); } } }