Object Pooling customizations
The basic Object Pool we’ve written so far works perfectly fine, but it’s not as optimized as it could be. We’re using multiple lists to store and manage our pooled objects, Object Pool access isn’t thread-safe, and we can only handle a single type of pooled object at a time. We’ll cover each of these areas in the next few subsections, but let’s start by updating our lists to a single queue.
Queues over lists
Because we need to continually update and track which pooled objects are available or in use, a queue
is a more efficient choice. Queues are first-in, first-out (FIFO) collections, meaning elements are inserted at one end and removed from the other, creating a circular array, which is exactly what we need.
Update ObjectPool.cs
to match the following code, which replaces the available and in-use GameObject
lists with a single queue, then updates CreateObject
, GetObject
, and ReturnObject
to use...