Как уничтожить случайно созданные объекты и запоминать это?

По задумке необходимо при нажатии кнопки в случайном месте массива 3 строки х 4 столбца генерировать кнопку из набора префабов, а при нажатии на созданную кнопку удалять объект. Для предотвращения создания объектов в одном месте (не должны накладываться друг на друга) в каждую ячейку координат (enemiesList) добавляется признак +1. В методе destroyEnemies не получается правильно определять координаты и сравнивать их с теми, с которыми создан объект.

Прошу помочь решить проблему.

public void enemySpawn()
{
    xRandom = Random.Range(0, enemiesX.Length);
    yRandom = Random.Range(0, enemiesY.Length);
    x = enemiesX[xRandom];
    y = enemiesY[yRandom];
    int counter = 0;
    
    for (int i = 0; i < enemiesY.Length; i++)
    {
        for (int j = 0; j < enemiesX.Length; j++)
        {
            if (enemiesList[i, j] == 0)
            {
                counter++;
            }
        }
    }
    if (counter != 0)
    {
        if (enemiesList[yRandom, xRandom] != 0)
        {
            do
            {
                xRandom = Random.Range(0, enemiesX.Length);
                yRandom = Random.Range(0, enemiesY.Length);
                x = enemiesX[xRandom];
                y = enemiesY[yRandom];
            } while (enemiesList[yRandom, xRandom] != 0);

            enemy = Instantiate(enemies[Random.Range(0, enemies.Length)], new Vector2(x, y), Quaternion.identity);
            enemy.transform.SetParent(Canvas.transform, false);
            enemy.GetComponent<RectTransform>().localPosition = new Vector2(x, y);
            enemiesList[yRandom, xRandom]++;

        }
        else
        {
            enemy = Instantiate(enemies[Random.Range(0, enemies.Length)], new Vector2(x, y), Quaternion.identity);
            enemy.transform.SetParent(Canvas.transform, false);
            enemy.GetComponent<RectTransform>().localPosition = new Vector2(x, y);
            enemiesList[yRandom, xRandom]++;
        }
    }
}

public void destroyEnemies()
{

    float x = gameObject.GetComponent<Transform>().position.x;
    float y = gameObject.GetComponent<Transform>().position.y;

    for (int i = 0; i < enemiesY.Length; i++)
    {
        for (int j = 0; j < enemiesX.Length; j++)
        {
            if (x == enemiesX[j] && y == enemiesY[i])
            {
                enemiesList[i, j]--;
            }
        }
    }

    Destroy(gameObject);
}

Ответы (0 шт):