PooledObject<T0>
структура в UnityEngine.Pool
Выполнено в:UnityEngine.CoreModule
Описание
Объект пулирования обворачивает ссылку на экземпляр, возвращенный в пул при удалении объекта пулирования.
Он автоматизирует возвращение справочных материалов, с тем чтобы избежать ручной обработки.
Следующий пример показывает, как использовать PooledObject:
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 } }
Конструкторы
| Конструктор | Описание |
|---|---|
| PooledObject_1 | Инициализация объединенного объекта с управляемым объектом и указание пула, в который возвращается экземпляр. |