private void Start()
    {
        //int gridSize = Constants.gridSizeHorizontal * Constants.gridSizeVertical;
        columns.Clear();

        for (int x = 0; x < Constants.gridSizeHorizontal; x++)
        {
            GameObject newColumn = Instantiate(Resources.Load("Column")) as GameObject;
            TileColumn column    = newColumn.GetComponent <TileColumn>();
            column.Init(x);
            newColumn.transform.SetParent(this.transform, false);
            newColumn.name = "Column " + x;
            columns.Add(newColumn.GetComponent <TileColumn>());
            for (int y = 0; y < Constants.gridSizeVertical; y++)
            {
                GameObject newTile = Instantiate(Resources.Load("Tile")) as GameObject;
                newTile.transform.SetParent(newColumn.transform, false);
                BaseTile tile = newTile.GetComponent <BaseTile>();

                //int hori = i % Constants.gridSizeHorizontal; //Row
                //int vert = Mathf.FloorToInt(i / Constants.gridSizeHorizontal);
                tile.xy      = new Vector2(x, y);
                newTile.name = "Tile (" + x + "," + y + ")"; //F.e. Tile (0,7)
                tile.InitRandom();

                column.tiles.Add(tile);
            }
        }
    }
    private void Refill(TileColumn column, string direction)
    {
        int tilesNeeded = Constants.gridSizeVertical - column.tiles.Count;

        for (int i = 0; i < tilesNeeded; i++)
        {
            GameObject newTile = Instantiate(Resources.Load("Tile")) as GameObject;
            newTile.transform.SetParent(column.transform, false);
            if (direction == "top")
            {
                newTile.transform.SetAsFirstSibling();
            }
            BaseTile tile = newTile.GetComponent <BaseTile>();

            tile.InitRandom();
            if (direction == "top")
            {
                column.tiles.Insert(0, tile);
            }
            else
            {
                column.tiles.Add(tile);
            }
        }

        foreach (BaseTile tile in column.tiles)
        {
            tile.transform.name = "Tile (" + column.number + ", " + column.tiles.IndexOf(tile) + ")"; //F.e. Tile (0,7)
            tile.xy             = new Vector2(column.number, column.tiles.IndexOf(tile));
        }
    }