Unity3D Game Object Pool Manager

I talked previously how much a game object manager improved performance in Cairn, and I want to make sure anyone using Unity has the opportunity to use it in their game as well.

When I started researching a work around for Unitys Spawn & Destroy methods I came across a large number of pre-existing solutions. ┬áThere are free scripts and expensive packages that could handle the issue, but I wanted the best of both. ┬áSomething easy to use, something I can understand, and something free. This ment we had to grow our own solution, but I didn’t have to start from scratch.

I found a great script on the Von Lehe Creative Blog. They had a great object manager, but you needed a separate script for each object you wished to pool and it was written in javascript.

Since the rest of Cairn is in C# I converted the script to that language. This allowed me to walk through the script and get a better handle on what it was doing.

Overall it’s pretty simple. Build a stack of Game Objects, mark them as active or inactive, then when something requests a new object determine if one needs to be created or if one needs to be reused.

I changed it handle more like the built Spawn & Destroy functions within Unity. The new script takes in a prefab, using it’s name to create a Game Object Pool for that specific prefab, and handles the stack of objects as the original script did from there.

You’ll notice some string manipulation and comparison that could be improved or edited, but for what I was trying to accomplish it works like a charm.

The script is below, so enjoy!

Continue reading