Unity 6.3
0 онлайн 63 гостей 3 в системе
Вход

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Инициализация объединенного объекта с управляемым объектом и указание пула, в который возвращается экземпляр.