//TODO write docs /// <summary> /// /// </summary> /// <param name="poolSize"></param> /// <param name="itemPrefab"></param> /// <exception cref="TypeLoadException"></exception> public void Init(int poolSize, ObjectPoolItem itemPrefab) { _poolSize = poolSize; _objectPrefab = itemPrefab; _pool = new Queue <ObjectPoolItem>(_poolSize); if (_objectPrefab == null) { throw new TypeLoadException(); } for (int i = 0; i < _poolSize; i++) { ObjectPoolItem newItem = Instantiate(_objectPrefab); newItem.transform.SetParent(transform); newItem.Disable(); _pool.Enqueue(newItem); } }
/// <summary> /// Deactives and adds an item back into the pool. /// </summary> /// <param name="sender"></param> public void Remove(ObjectPoolItem sender) { sender.Disable(); sender.transform.SetParent(transform); _pool.Enqueue(sender); }