Почему при создании Merge игры невозможно спавнить новых юнитов на месте старых после их слияния?

Вот есть моя сцена

введите сюда описание изображения

Я соединяю эти 2 юнита

введите сюда описание изображения

И на их месте могу спавнить новые

введите сюда описание изображения

Но если я соединю уже юнит, который был получен путем слияния двух других, то на его месте не смогу спавнить новый. Из-за чего так происходит? В коде вообше ничего не нашел

public class Merge : MonoBehaviour
{
    public static Merge instance { get; private set; }

    [SerializeField] private GameObject[] _units;

    [SerializeField] private Transform[] _tilesKey;
    [SerializeField] private bool[] _tilesValue;

    [SerializeField] private GameObject _mergeParticles;

    private List<Transform> _freeTiles = new List<Transform>();

    public bool Connect(GameObject unitToDrag, GameObject unitToMerge)
    {
        MergeUnit unitOne = unitToDrag.GetComponent<MergeUnit>();
        MergeUnit unitTwo = unitToMerge.GetComponent<MergeUnit>();
        
        if (unitOne.Rank == unitTwo.Rank)
        {
            int rank = unitOne.Rank + 1;
            int randomUnit = RandomNumberInArray(_units.Length);

            Vector3 spawnPos = unitToMerge.transform.position;

            _freeTiles.Clear();
            SetTileKeyValue(unitOne.GetTile(), false);

            Destroy(unitToDrag.gameObject);
            Destroy(unitToMerge.gameObject);

            GameObject unitToSpawn = Instantiate(_units[randomUnit], spawnPos, Quaternion.identity);
            Instantiate(_mergeParticles, spawnPos, Quaternion.identity);
            unitToSpawn.GetComponent<MergeUnit>().Rank = rank;

            return true;
        }
        else
        {
            return false;
        }
    }

    public void Spawn()
    {
        GameObject randomUnit = _units[RandomNumberInArray(_units.Length)];

        _freeTiles.Clear();
        
        for (int i = 0; i < _tilesKey.Length; i++)
        {
            if (!_tilesValue[i])
            {
                _freeTiles.Add(_tilesKey[i]);
            }
        }
        
        Transform randomTile;
        if (_freeTiles.Count > 0)
        {
            randomTile = _freeTiles[RandomNumberInArray(_freeTiles.Count)];

            SetTileKeyValue(randomTile, true);
            
            GameObject spawnedUnit = Instantiate(randomUnit, randomTile.position, Quaternion.identity);
            spawnedUnit.GetComponent<MergeUnit>().SetTile(randomTile);
        }
    }


    
    private void SetTileKeyValue(Transform randomTile, bool value)
    {
        int index = Array.IndexOf(_tilesKey, randomTile);
        if (index != -1 && index < _tilesValue.Length)
        {
            _tilesValue[index] = value;
        }
    }
}

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