예제 #1
0
    public static PooledObject Get(GameObject prefab)
    {
        ObjectPool objPool = GetPool(prefab.name, typeof(GameObject));

        if (objPool == null)
        {
            objPool = CreateNewPool(prefab);
        }

        PooledObject newObject = objPool.GetObject(prefab);

        newObject.Activate();

        return(newObject);
    }
예제 #2
0
    public PooledObject GetObject(GameObject prefab)
    {
        PooledObject retrievedObject = null;

        var disabledObjects = m_PoolGameObjects.Where(x => x.gameObject.activeSelf == false);

        if (disabledObjects.Any())
        {
            retrievedObject = disabledObjects.First();
        }
        else
        {
            retrievedObject = CreateNewObject(prefab);
        }

        retrievedObject.Activate();

        return(retrievedObject);
    }
예제 #3
0
    public PooledObject GetInstance(Transform parent)
    {
        PooledObject obj = null;


        if (pooledObjects.Count > 0)
        {
            obj = pooledObjects[0];
            pooledObjects.RemoveAt(0);
        }
        else
        {
            Transform newParent = parent == null? transform : parent;

            obj      = Instantiate(prefab, newParent);
            obj.pool = this;
        }

        obj.Activate();

        return(obj);
    }