-
Notifications
You must be signed in to change notification settings - Fork 14
Home
Summary: This project provides a simple implementation for pool of prefabs to avoid performance issues with runtime prefab instantiation.
The project contains an example of usage. You can also read about simple prefab pool from my blog post on blogger.
The usage is extremely simple. First you create an instance of PrefabPool (there are overloaded constructors for flexibility). The constructor with all parameters:
// Create pool of cubes containing instantiated cubePrefabs
PrefabPool cubesPool =
new PrefabPool(cubePrefab, parent, initialPoolSize, growth, maxPoolSize);
This is the code that creates a pool of cubePrefab
transform objects, instantiates initialPoolSize
number of them (items are inactive after instantiation). If there is a need to instantiate more prefabs they will be batch instantiated growth
number at a time. You can also limit the size of your pool by specifying maxPoolSize
.
Now the only methods you should care about are ObtainPrefab
and RecyclePrefab
. When you obtain prefab from the pool it is set to be active and you specify its new position, rotation and scale.
Currently when item is obtained you provide a new parent for obtained instance. Transform is reset and layer is set to parents' layer. Set parent
to null
if instance does not need to have a parent.
Transform retrievedCubeInstance1 = cubesPool.ObtainPrefabInstance(newParent.gameObject);
cubesPool.RecyclePrefab(retrievedCubeInstance1);