public void SpawnEnemy()
    {
        EnemyPenguinStatus     newEnemyPenguin = CheckForAvailableGarbageEnemy();
        EnemyHealthBarPosition newEnemyUI      = CheckForAvailableGarbageEnemyUI();

        Transform spawnPoint = FindFurthestSpawnPoint();

        if (newEnemyPenguin == null)
        {
            //Debug.Log("Instantiating new enemy");
            //Instantiate.
            newEnemyPenguin = Instantiate(prefabEnemy, spawnPoint.position, spawnPoint.rotation);

            listGarbageEnemies.Add(newEnemyPenguin);
        }
        else
        {
            //Debug.Log("Recycling new enemy");
            newEnemyPenguin.transform.position = spawnPoint.position;
        }

        if (newEnemyUI == null)
        {
            newEnemyUI = Instantiate(prefabEnemyStatUI, Vector3.zero, Quaternion.identity);
            newEnemyUI.transform.SetParent(prefabEnemyStatUI.transform.parent, true);
            newEnemyUI.transform.localScale = Vector3.one;
            RectTransform rtUI = newEnemyUI.transform as RectTransform;

            rtUI.SetAsFirstSibling();
            listGarbageEnemyUIs.Add(newEnemyUI);
        }
        else
        {
        }

        newEnemyPenguin.transform.position = spawnPoint.position;
        newEnemyPenguin.gameObject.SetActive(true);
        newEnemyUI.gameObject.SetActive(true);

        //Pair UI and unit.
        newEnemyUI.target       = newEnemyPenguin.transform;
        newEnemyPenguin.statsUI = newEnemyUI;

        newEnemyPenguin.Init();
    }
    private EnemyPenguinStatus CheckForAvailableGarbageEnemy()
    {
        EnemyPenguinStatus returnEnemy = null;

        //Go through list and return any inactive spawned enemy.
        if (listGarbageEnemies.Count > 0)
        {
            foreach (EnemyPenguinStatus ec in listGarbageEnemies)
            {
                if (!ec.isActiveAndEnabled)
                {
                    returnEnemy = ec;
                }
            }
        }

        return(returnEnemy);
    }