Object Pooling
Matt Bauer 6/29/2015
Video tutorial about creating a simple object pooler in Unity3D
This is a continuation of Final Parsec's tutorial series on building a space-themed rail shooter with Unity3d. In this tutorial, I'll be going over how to create a managed object pool. This will allow you to reduce the number of GameObjects that are instantiated and destroyed, thus improving performance.
In this video tutorial, I'll discuss how I created a simple object pool to manage our projectiles and explosions.
A basic implementation would look like this:
public static List pool = new List();
public static GameObject GetObject(Vector3 worldPosition)
{
GameObject go = null;
if (pool.Count != 0)
{
go = PrefabAccessor.pool[0];
pool.RemoveAt(0);
}
if (go== null)
{
go= (Instantiate(objectPrefab, worldPosition, Quaternion.Euler(Vector3.zero)) as GameObject);
}
else
{
go.transform.position = worldPosition;
}
return go;
}
And the code to return the object to the pool would look like this:
void BackInThePool()
{
transform.position = new Vector3(transform.position.x, -99, transform.position.z);
pool.Add(this.gameObject);
}
You can follow along with the development of the project and find the source code from the tutorial on GitHub.