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); }