Is it possible to invert a 2d sprite's colors in Unity?

Like, black becomes white, white becomes black? I know I can apply a color to the material of the Sprite, but that seems to shade everything equally.

Or, am I going to have to make two versions of every image I want to invert and switch between them?

Use GetPixels on your texture to get all the colors. Then iterate through the array of colors and invert the colors

 col = (col == 1) ? 0 : 1;

Then use SetPixels with your array and Apply.

But you would be faster with two textures.