Exemple #1
0
    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);
            }
        }
    }
Exemple #2
0
    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);
        }
    }
Exemple #3
0
 public static void Sleep(this PoolingObj obj)
 {
     ObjPoolingManager.Sleep(obj);
 }
Exemple #4
0
 public void InitPoolingObj(PoolingObj prefab)
 {
     Prefab = prefab;
 }