Ejemplo n.º 1
0
    public PoolObject getPoolObject(GameObject prefab, Vector3 position, Quaternion rotation, Type expectedType)
    {
        PoolObject poolObject = null;

        if (pool.Count > 0)
        {
            poolObject = pool.Pop();

            foreach (PoolObject newPoolObject in poolObject.GetComponents <PoolObject>())
            {
                if (newPoolObject.GetType() == expectedType)
                {
                    poolObject = newPoolObject;
                    break;
                }
            }

            poolObject.transform.position = position;
            poolObject.transform.rotation = rotation;
            poolObject.init();
        }
        else
        {
            GameObject   newObject      = GameObject.Instantiate(prefab, position, rotation);
            PoolObject[] newPoolObjects = newObject.GetComponents <PoolObject>();
            foreach (PoolObject newPoolObject in newPoolObjects)
            {
                newPoolObject.PoolManager = this;
                if (newPoolObject.GetType() == expectedType)
                {
                    poolObject = newPoolObject;
                }
            }
        }

        return(poolObject);
    }