void checkRow(int value)
    {
        GameObject[] blocks = GameObject.FindGameObjectsWithTag("FigBlock"); //Все фигуры на сцене
        int count = 0; //счётчик блоков фигур найденных в строке
        for(int i=1; i<_board.GetLength(0)-1; i++){//идём по каждой строчке
            if(_board[i,value]==1){//проверяем на наличе
                count++;//если нашли блок увелчичиваем счётчик
            }
        }

        if(value==_bustedHeight && count>0){//если это высшая точка поля и там есть хоть один блок - "потрачено"
            _busted = true;

            _bestScoreFile = this.GetComponent<BestScoreSave>();

            int tempScore = _bestScoreFile.ReadBestScore();
            if (tempScore<_score)
            {
                _bestScoreFile.SaveBestScore();
                _bestScoreFile.WarningWindowsExit(false);
            }
            else
                _bestScoreFile.WarningWindowsExit(true);

        }

        if(count==10){//если счётчик увелчилися до 10 - ширины поля
            //начинаем с низа игровой доски
            for(int cj=value; cj<_board.GetLength(1)-3; cj++){
                for(int ci=1; ci<_board.GetLength(0)-1; ci++){
                    foreach(GameObject go in blocks){

                        int height = Mathf.RoundToInt(go.transform.position.y);
                        int xPos = Mathf.RoundToInt(go.transform.position.x);

                        if(xPos == ci && height == cj){

                            if(height == value){//строчка, которую требуется уничтожит
                                _board[xPos,height] = 0;//обнуляем
                                Destroy(go.gameObject);
                                _score = _score + 10;
                            }
                            else if(height > value){
                                _board[xPos,height] = 0;//старую позицию обнуляем
                                _board[xPos,height-1] = 1;//делаем новую позицию
                                go.transform.position = new Vector3(xPos, height-1, go.transform.position.z);//сдвигаем блоки вниз
                            }
                        }
                    }
                }
            }
            checkRow(value); //после продвижения блоков вниз, снова проверяем на заполненность строчки
        }
        else if(value+1<_board.GetLength(1)-3){
            checkRow(value+1); //проверяем строчку над
        }
    }
    void checkRow(int value)
    {
        GameObject[] blocks = GameObject.FindGameObjectsWithTag("FigBlock"); //Все фигуры на сцене
        int          count  = 0;                                             //счётчик блоков фигур найденных в строке

        for (int i = 1; i < _board.GetLength(0) - 1; i++)                    //идём по каждой строчке
        {
            if (_board[i, value] == 1)                                       //проверяем на наличе
            {
                count++;                                                     //если нашли блок увелчичиваем счётчик
            }
        }


        if (value == _bustedHeight && count > 0)    //если это высшая точка поля и там есть хоть один блок - "потрачено"
        {
            _busted = true;

            _bestScoreFile = this.GetComponent <BestScoreSave>();

            int tempScore = _bestScoreFile.ReadBestScore();
            if (tempScore < _score)
            {
                _bestScoreFile.SaveBestScore();
                _bestScoreFile.WarningWindowsExit(false);
            }
            else
            {
                _bestScoreFile.WarningWindowsExit(true);
            }
        }

        if (count == 10)      //если счётчик увелчилися до 10 - ширины поля
        //начинаем с низа игровой доски
        {
            for (int cj = value; cj < _board.GetLength(1) - 3; cj++)
            {
                for (int ci = 1; ci < _board.GetLength(0) - 1; ci++)
                {
                    foreach (GameObject go in blocks)
                    {
                        int height = Mathf.RoundToInt(go.transform.position.y);
                        int xPos   = Mathf.RoundToInt(go.transform.position.x);

                        if (xPos == ci && height == cj)
                        {
                            if (height == value)                            //строчка, которую требуется уничтожит
                            {
                                _board[xPos, height] = 0;                   //обнуляем
                                Destroy(go.gameObject);
                                _score = _score + 10;
                            }
                            else if (height > value)
                            {
                                _board[xPos, height]     = 0;                                                      //старую позицию обнуляем
                                _board[xPos, height - 1] = 1;                                                      //делаем новую позицию
                                go.transform.position    = new Vector3(xPos, height - 1, go.transform.position.z); //сдвигаем блоки вниз
                            }
                        }
                    }
                }
            }
            checkRow(value);             //после продвижения блоков вниз, снова проверяем на заполненность строчки
        }
        else if (value + 1 < _board.GetLength(1) - 3)
        {
            checkRow(value + 1);           //проверяем строчку над
        }
    }