public Pooler GetPooler(GameObject inPoolPrefab) { Pooler pooler = null; if (this.prefabToPooler.ContainsKey(inPoolPrefab)) { pooler = this.prefabToPooler[inPoolPrefab]; } // if passing in a prefab which doesn't have a pooler yet, create one else { GameObject newPoolerGO = new GameObject(); newPoolerGO.SetLayerRecursively(PoolManager.I.gameObject.layer); newPoolerGO.name = inPoolPrefab.name; newPoolerGO.transform.parent = this.transform; newPoolerGO.transform.localPosition = Vector3.zero; Poolable poolable = new Poolable(); poolable.key = inPoolPrefab.name; poolable.prefab = inPoolPrefab; poolable.amountToSpawn = 1; pooler = newPoolerGO.AddComponent <Pooler>(); pooler.Initialize(poolable); } return(pooler); }