public void ClearPooledObjects(GameObject go) { ObjectPoolDefinition poolDefinition = null; for (int i = 0; i < itemsToPool.Count; ++i) { if (itemsToPool[i].poolObject.tag == go.tag) { poolDefinition = itemsToPool[i]; break; } } if (poolDefinition != null) { var objects = pooledObjects[poolDefinition]; if (objects != null) { for (int i = 0; i < objects.Count; ++i) { if (objects[i].activeInHierarchy) { objects[i].SetActive(false); } } } } }
public void Initialize(ObjectPoolDefinition definition) { m_PooledObjects = new List <PoolableObject>(); m_Definition = definition; Clear(); AddPooledObjects(definition.Amount); }
public GameObject GetPooledObject(string tag) { ObjectPoolDefinition poolDefinition = null; for (int i = 0; i < itemsToPool.Count; ++i) { if (itemsToPool[i].poolObject.tag == tag) { poolDefinition = itemsToPool[i]; break; } } if (poolDefinition != null) { var objects = pooledObjects[poolDefinition]; if (objects != null) { for (int i = 0; i < objects.Count; ++i) { if (!objects[i].activeInHierarchy) { objects[i].SetActive(true); if (objects[i].GetComponent <tk2dSpriteAnimator>() != null) { objects[i].GetComponent <tk2dSpriteAnimator>().Play(); } return(objects[i]); } } if (poolDefinition.IsExpandable) { GameObject obj = Instantiate(poolDefinition.poolObject) as GameObject; pooledObjects[poolDefinition].Add(obj); if (poolDefinition.parentObject != null) { obj.transform.parent = poolDefinition.parentObject.transform; } return(obj); } } } Debug.Log("Requested a pooled object [" + tag + "] but could not retrieve it."); return(null); }