Пример #1
0
        private void Start()
        {
            // Create a pool, this also returns the pool so we can save a reference
            PoolingManager.CreatePoolingList(objectToPool, poolName, 1000);
            // but lets make sure that getting it again works
            PoolingList testPrefabPool = PoolingManager.GetPoolByName(poolName);

            // now get an object directly from our pooled list. I left methods here because I
            // could see wanting to directly manipulate lists, like emptying them or filling them on-demand
            if (testPrefabPool != null)
            {
                GameObject pooledObjectInstance;
                if (testPrefabPool.TryGetPooledObject(out pooledObjectInstance))
                {
                    Debug.Log("got prefab from specific PoolingList: " + testPrefabPool.name);
                    pooledObjectInstance.transform.position = new Vector3(Mathf.PingPong(Time.time, 8) - 4, transform.position.y, transform.position.z);
                }
            }

            // but for most cases you would probably just want to grab an object easily from the manager by name
            objectsToReturn = new List <GameObject>();
            Debug.Log("Got Prefabs directly from PoolingManager: " + testPrefabPool.name);
            for (int i = 0; i < 100; i++)
            {
                var newObject = PoolingManager.GetPooledObjectByName(poolName);
                if (newObject != null)
                {
                    objectsToReturn.Add(newObject);
                    // manipulate it a bit
                    newObject.transform.position = new Vector3(Mathf.PingPong(Time.time, 8) - 4, transform.position.y, transform.position.z);
                }
            }
            // now lets the objects to the pool after a delay.
            // The code to return an object lives on the object itself in
            // a class called PooledObject.  This is added to each object
            // in the pool during pool creation
            Invoke("ReturnToPoolingList", 5);

            // create a new fireball pool, get an object from it
            // and then use a user created script on that object
            CreateFireballPool();
        }