In January 2015, two lifelong friends started to collect people around their dream and LEAF Games & Software came to light. We are an indie Italian studio creating and developing mobile apps and PC games. All that we offer is meant to be innovative and it’s created from a scratch by a fresh and young development team. We believe in originality and uniqueness of ideas and we endeavor to promote the individual initiative enhancing the talent of each member of our team. We believe in people who dream big because LEAF people dream big. We want to offer unique products and grant a fun gaming experience to people of all ages. Our free to play apps are already available on Google Play Store and Apple App Store, and we are working on Leap of Champions, our first PC game. We ensure fun and excitement for the gamers, exactly what we demand for ourselves!

Post tutorial Report RSS Object Pooling in Unity 5

Object Pools (a.k.a. resource pools) are used to manage the object caching. Object Pooling is nothing but a design pattern where we have a pool of objects of the same type we can use and recycle. In this post, we will give you some tips to use Object Pooling when you work with Unity 5.

Posted by on - Intermediate Client Side Coding

What’s the point of using the Object Pooling?

Every time we instantiate and destroy in Unity, our action is inefficient and can slow our projects down because we are allocating memory and causing a CPU overhead.

When we have to use a large quantity of objects of the same type for a short period of time, we can use the Object Pool. Using the Object Pool, in fact, we can lighten the load recycling the object we use.

This way, we will have a significant performance boost when we have, e.g. manage the bullets of a gun in a shooter, or to create a path in a scrolling game.

Implementation (Simple):

Object pooling 1

All we have to do is add the SimpleObjectPool component to a GameObject in Scene and give it the Prefab of the GameObject to pool.

When we need it, we can call the Get() method that returns us the first Object available. If there aren’t, it will instantiate one and return it to us. When we have finished using an Object, we can recycle the object itself through the Recycle() method. This way, the Object will be ready to be reused.

Implementation (Advances, using Generics):

Object pooling 2

In this case, thanks to the use of Generics, we can Pool any type of Component and customize an event for the Recycle() and for the Get(). In this case the component to be Pool has to implement IPoolable interface, in order to use OnGet() and OnRecycle() events.

Object pooling 3

Example of IPoolable implementation:

Object pooling 4

This is an example of use in Unity:

Object pooling 5

All we have to do is call methods Get() and Recycle() on the Pool and, automatically, according to the implementation of IPoolable interface, will be also called OnGet() and OnRecycle() of the object taken from the Pool or recycled. If the latter does not implement IPoolable interface, it will raised an unhandled exception.

More information about Object Pooling are available here on the official Unity Learn section.

I hope this tip has been helpful and that you will use it while you’re working with Object Pooling in Unity 5!

Riccardo

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: