private void SetUpStartPool() { if (startPoolData is null) { return; } for (int i = 0; i < startPoolData.Length; i++) { for (int count = 0; count < startPoolData[i].initCount; count++) { if (startPoolData[i].prefab == null || startPoolData[i].initCount <= 0) { continue; } PoolingObj prefab = startPoolData[i].prefab; if (!pool_Active.ContainsKey(prefab)) { pool_Active.Add(prefab, new List <PoolingObj>()); pool_Sleeping.Add(prefab, new Queue <PoolingObj>()); } PoolingObj obj = Instantiate(prefab); obj.InitPoolingObj(prefab); pool_Sleeping[prefab].Enqueue(obj); obj.transform.SetParent(Inst.defaultPoolParent); obj.gameObject.SetActive(false); } } }
public static void Sleep(PoolingObj obj) { if (obj.Prefab != null && pool_Active.ContainsKey(obj.Prefab)) { if (pool_Active[obj.Prefab].Contains(obj)) { pool_Active[obj.Prefab].Remove(obj); pool_Sleeping[obj.Prefab].Enqueue(obj); obj.gameObject.SetActive(false); return; } return; } // Destroy if there is no Active PoolingObj if (!obj.gameObject.IsPrefab()) { Destroy(obj.gameObject); } }
public static void Sleep(this PoolingObj obj) { ObjPoolingManager.Sleep(obj); }
public void InitPoolingObj(PoolingObj prefab) { Prefab = prefab; }