public GameObject Get() { GameObject obj; if (PoolObjs.Count > 0) { obj = PoolObjs[0]; PoolObjs.RemoveAt(0); } else { if (Prefab == null) { obj = InstantiateFunc.Invoke(); } else { obj = GameObject.Instantiate(Prefab); } } AliveObjs.Add(obj); obj.SetActive(true); return(obj); }
public T Get() { T component; if (PoolObjs.Count > 0) { component = PoolObjs[0]; PoolObjs.RemoveAt(0); component.Reinstantiate(); } else { if (Prefab == null) { component = InstantiateFunc.Invoke(); } else { component = GameObject.Instantiate(Prefab); } component.Instantiate(); } AliveObjs.Add(component); return(component); }
public void Clear() { while (PoolObjs.Count > 0) { GameObject.Destroy(PoolObjs.Pop()); } }
public void ClearPoolObjs() { while (PoolObjs.Count > 0) { GameObject.Destroy(PoolObjs[0]); PoolObjs.RemoveAt(0); } }
public void Put(GameObject obj) { AliveObjs.Remove(obj); PoolObjs.Add(obj); obj.SetActive(false); if (PoolCollection != null) { obj.transform.SetParent(PoolCollection); } }
public bool Recycle(GameObject poolObj) { if (poolObj == null) { return(false); } var poolScript = poolObj.GetComponent <IPoolable>(); if (poolScript == null) { return(false); } if (!poolScript.Active) { return(false); } PoolObjs.Push(poolObj); poolScript.OnRecycle(); return(true); }
public GameObject Spawn() { GameObject requiredObj; IPoolable poolScript; if (PoolObjs.Count == 0) { requiredObj = GameObject.Instantiate(Prefab); poolScript = requiredObj.GetComponent <IPoolable>(); if (poolScript == null) { poolScript = requiredObj.AddComponent <BasePoolObj>(); poolScript.RecycleToPool += Recycle; } } else { requiredObj = PoolObjs.Pop(); poolScript = requiredObj.GetComponent <IPoolable>(); } poolScript.OnSpawn(); return(requiredObj); }
public void Put(T component) { component.DeactivateObj(PoolCollection); AliveObjs.Remove(component); PoolObjs.Add(component); }