예제 #1
0
    public GameObject SpawnFromPool(string tag, Vector3 position, Quaternion rotation, Vector3 scale)
    {
        if (!poolDictionary.ContainsKey(tag) || poolDictionary[tag].Count == 0)
        {
            Debug.LogWarning("Not Found: " + tag);
            return(null);
        }

        GameObject objectToSpawn = poolDictionary[tag].Dequeue();

        objectToSpawn.transform.position   = position;
        objectToSpawn.transform.rotation   = rotation;
        objectToSpawn.transform.localScale = scale;

        Poolable poolable = objectToSpawn.GetComponent <Poolable>();

        if (poolable != null)
        {
            poolable.OnObjectSpawn();
        }

        objectToSpawn.SetActive(true);

        poolDictionary[tag].Enqueue(objectToSpawn);

        return(objectToSpawn);
    }