Пример #1
0
    // Returns an instance of the prefab
    public GameObject GetObject()
    {
        GameObject spawnedGameObject;

        // if there is an inactive instance of the prefab ready to return, return that
        if (inactiveInstances.Count > 0)
        {
            // remove the instance from teh collection of inactive instances
            spawnedGameObject = inactiveInstances.Pop();
        }
        // otherwise, create a new instance
        else
        {
            spawnedGameObject = (GameObject)GameObject.Instantiate(prefab);

            // add the PooledObject component to the prefab so we know it came from this pool
            ShopScrollObject_pool pooledObject = spawnedGameObject.AddComponent <ShopScrollObject_pool>();
            pooledObject.pool = this;
        }

        // put the instance in the root of the scene and enable it
        spawnedGameObject.transform.SetParent(null);
        spawnedGameObject.SetActive(true);

        // return a reference to the instance
        //Debug.LogWarning(" spawned GameObject - " + spawnedGameObject.name);
        return(spawnedGameObject);
    }
Пример #2
0
    // Return an instance of the prefab to the pool
    public void ReturnObject(GameObject toReturn)
    {
        ShopScrollObject_pool pooledObject = toReturn.GetComponent <ShopScrollObject_pool>();

        // if the instance came from this pool, return it to the pool
        if (pooledObject != null && pooledObject.pool == this)
        {
            // make the instance a child of this and disable it
            toReturn.transform.SetParent(transform);
            toReturn.SetActive(false);

            // add the instance to the collection of inactive instances
            inactiveInstances.Push(toReturn);
            //Debug.LogWarning(" return GameObject - " + toReturn.name);
        }
        // otherwise, just destroy it
        else
        {
            Debug.LogWarning(toReturn.name + " was returned to a pool it wasn't spawned from! Destroying.");
            DestroyImmediate(toReturn);
        }
    }