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); }
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); }