While working on my top-down shooter game, I noticed that the game would hang a bit periodically, due to the garbage collector cleaning up all these projectiles and enemies I had created over the last minute. In order to optimize this a bit, I created an object caching/pooling system that reuses objects instead of destroying them and allocating new ones later. This is ideal for game objects that have short lifespans and high frequency, such as projectiles and enemies. I've attached a package that contains the script files needed to use my ObjectPoolManager. I've included explanation and usage examples in the comments of the the ObjectPoolManager.cs file. For those who can't bother downloading the package now, here's the copy paste: I hope this will be of some use to someone Please let me know if you find any problems with it. Enjoy!