예제 #1
0
 public static void ReturnObject(ObjectPoolCode code, GameObject gameObject)
 {
     if (objectPoolQueue.ContainsKey(code))
     {
         objectPoolQueue[code].Enqueue(gameObject);
     }
 }
예제 #2
0
    public static void RegisterObjectPoolItem(ObjectPoolCode code, GameObject gameObject, int amount)
    {
        if (!objectPoolQueue.TryGetValue(code, out Queue <GameObject> objectPoolItem))
        {
            objectPool.Add(code, gameObject);

            objectPoolItem = new Queue <GameObject>();
            for (int i = 0; i < amount; i++)
            {
                var item = Instantiate(gameObject);
                item.SetActive(false);
                objectPoolItem.Enqueue(item);
            }
            objectPoolQueue.Add(code, objectPoolItem);
        }
        else
        {
            for (int i = 0; i < amount; i++)
            {
                var item = Instantiate(gameObject);
                item.SetActive(false);
                objectPoolItem.Enqueue(item);
            }
        }
    }
예제 #3
0
    public static GameObject GetObject(ObjectPoolCode code)
    {
        if (!objectPoolQueue.ContainsKey(code))
        {
            return(null);
        }
        var objectPoolItem = objectPoolQueue[code];

        if (objectPoolItem.Count <= 0)
        {
            var item = Instantiate(objectPool[code]);
            item.SetActive(false);
            objectPoolItem.Enqueue(item);
        }
        return(objectPoolItem.Dequeue());
    }