示例#1
0
    public RecycleGameObjectManager NextObject()
    {
        RecycleGameObjectManager instance = null;

        foreach (var go in poolInstances)
        {
            if (!go.gameObject.active)
            {
                instance = go;
                break;
            }
        }

        if (instance == null)
        {
            instance = CreateInstance();
        }

        instance.Restart();

        return(instance);
    }
示例#2
0
    private ObjectPoolManager GetObjectPool(RecycleGameObjectManager reference)
    {
        ObjectPoolManager pool = null;

        if (_pools.ContainsKey(reference.gameObject.name))
        {
            pool = _pools[reference.gameObject.name];
        }
        else
        {
            if (_gameObjectsPool == null)
            {
                _gameObjectsPool = new GameObject("GameObjectsPool");
            }
            GameObject poolContainer = new GameObject(reference.gameObject.name + "ObjectPool");
            poolContainer.layer            = reference.gameObject.layer;
            poolContainer.transform.parent = _gameObjectsPool.transform;
            pool        = poolContainer.AddComponent <ObjectPoolManager>();
            pool.prefab = reference;
            _pools.Add(reference.gameObject.name, pool);
        }

        return(pool);
    }