private static ObjectPool CreateNewPool(PooledObject prefab, int poolSize) { GameObject obj; ObjectPool pool; obj = new GameObject(prefab.name + " Pool"); pool = obj.AddComponent <ObjectPool>(); pool.prefab = prefab; //store the objects in corresponding categories if (prefab.GetComponentInChildren <AudioSource>()) { StaticAudioPoolDictionary[prefab] = pool; obj.transform.parent = StaticAudioPoolReference.transform; } else if (prefab.GetComponentInChildren <ParticleSystem>()) { StaticVFXPoolDictionary[prefab] = pool; obj.transform.parent = StaticVFXPoolReference.transform; } else { StaticMiscPoolDictionary[prefab] = pool; obj.transform.parent = StaticMiscPoolReference.transform; } //generate target number of pooled objects for (int i = 0; i < poolSize; i++) { pool.CreatePooledObject(i); } return(pool); }