Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


PooledObject<T>

A pooled object wraps a reference to an instance returned to the pool when the pooled object is disposed of.
Read time 1 minuteLast updated 6 days ago

Definition

public struct PooledObject<T> : IDisposable where T : class

Remarks

It automates the return of references to avoid manual handling.
The following example shows how to use a PooledObject:

Examples

using UnityEngine;using UnityEngine.Pool;public class SpawnAndConfigureOnce : MonoBehaviour{ [SerializeField] private GameObject visualPrefab; private ObjectPool<GameObject> _pool; void Awake() { _pool = new ObjectPool<GameObject>( createFunc: () => Instantiate(visualPrefab), actionOnGet: gameObject => gameObject.SetActive(true), actionOnRelease: gameObject => gameObject.SetActive(false), actionOnDestroy: gameObject => Destroy(gameObject), collectionCheck: true, // An Editor-only check that determines if an instance is returned back to the pool. Throws an exception if the instance is already in the pool. defaultCapacity: 10, maxSize: 100); } // Demonstrates synchronous usage: all work finishes before scope ends. public void ShowVisualOnce(Vector3 position, Quaternion rotation) { using (PooledObject<GameObject> pooled = _pool.Get(out GameObject gameObject)) { gameObject.transform.SetPositionAndRotation(position, rotation); // Do synchronous work only. Once we leave this scope, // the object is automatically returned to the pool. // e.g., sampling data, taking a screenshot, etc. } // Dispose called here -> gameObject returned to pool }}

Constructors

Constructor

Description

PooledObject`1(`0,UnityEngine.Pool.IObjectPool{`0})Initializes the pooled object with a managed object and specifies the pool to which the instance is returned.