public IEnumerator SpawnEnemies()
        {
            while (playerController.IsAlive)
            {
                yield return(new WaitForSeconds(spawnTime));

                for (int i = 0; i < enemyInfo.Count; i++)
                {
                    EnemiesController retrievedEnemy = GetPooledEnemy(enemyInfo[i].typeEnemy);
                    if (retrievedEnemy != null)
                    {
                        retrievedEnemy.transform.position = enemyInfo[i].spawnPoint.position;
                        retrievedEnemy.gameObject.SetActive(true);
                    }
                }
            }
        }
        public void CreatePool()
        {
            enemiesByTypes = new List <EnemiesByType>();                               // лист врагов по типам

            for (int i = 0; i < enemyInfo.Count; i++)                                  // проходим по листу данных врагов
            {
                EnemiesByType enemyByType = new EnemiesByType(enemyInfo[i].typeEnemy); // выдергиваем из листа данных о врагах элементы(слон идет первый)  и получаем на него ссылку

                for (int j = 0; j < enemyInfo[i].poolCount; j++)                       // вторим циклом добаляем enemiesContoller
                {
                    EnemiesController enemiesController = Instantiate(enemyInfo[i].enemyPrefab, enemyInfo[i].spawnPoint.position, Quaternion.identity, enemiesParent);
                    enemiesController.gameObject.SetActive(false);
                    enemiesController.Init(playerController, OnEnemyDieHandler); // инициализация данного объекта
                    enemyByType.enemiesControllers.Add(enemiesController);       // добавили в лист данных объектов данного типа но не больше poolCount
                }

                enemiesByTypes.Add(enemyByType);
            }
        }
        public EnemiesController GetPooledEnemy(TypeEnemy typeEnemy)                     // выдергиваем нужный на объект по типу (допустим нам нужен слон)
        {
            for (int i = 0; i < enemiesByTypes.Count; i++)                               // пробегаемся по списку создаанных объектов разного типа
            {
                if (enemiesByTypes[i].typeEnemy == typeEnemy)                            // и если это слон
                {
                    for (int j = 0; j < enemiesByTypes[i].enemiesControllers.Count; j++) // проходим по листу слонов
                    {
                        if (!enemiesByTypes[i].enemiesControllers[j].gameObject.activeSelf)
                        {
                            return(enemiesByTypes[i].enemiesControllers[j]); // вернуть первого слона из списка объектов(контроллеров) типа слона
                        }
                    }

                    EnemiesController enemiesController = Instantiate(enemyInfo[i].enemyPrefab, enemyInfo[i].spawnPoint.position, Quaternion.identity, enemiesParent);
                    enemiesController.gameObject.SetActive(false);
                    enemiesController.Init(playerController, OnEnemyDieHandler);
                    enemiesByTypes[i].enemiesControllers.Add(enemiesController);
                    return(enemiesController);
                }
            }
            return(null);
        }