Unity not redrawing sprite, after sprite change

I am making a game where the player mines dirt by walking on it: Too many squares So, I created a scene and added a bunch of dirt to a grid, from a dirt prefab. When the character walks on a square, it is supposed to change to dark dirt. If I only have a few hundred dirt squares, it works as expected. I step on the dirt, and it turns dark. But now that I have a few thousand dirt squares, unity renders incorrectly, and will only change the sprite for dirt squares that are in every 4 or 5 columns. See the following picture: Wrong Mining

The debugger outputs GetComponent<SpriteRenderer>().sprite.name for the dirt I walk on is DarkDirt even though it is showing up as “Dirt” in reality. The inspector in the scene view agrees that it should be rendering DarkDirt.

How can I get unity to re-draw sprites when they update?