EDITAR
Después de pensarlo, si no está poniendo un tinte en nada, pero usando los colores originales de los gráficos, podría tener (como digo a continuación) todos sus colores de objetos dibujados configurados en una variable de Color declarada establecida en blanco. (Color NoTint = Color.White;) y luego Lerp que si el jugador vive es igual a cero. Cada objeto dibujado con el Color NoTint cambiará lentamente (de acuerdo con la velocidad de interpolación mencionada a continuación) a lo que sea que esté Lerping.
Sin embargo, si tiene diferentes matices en diferentes objetos, el siguiente bucle foreach podría funcionar.
Fin de edición
En mi conocimiento limitado, intentaría esto: declare los colores que usa al dibujar objetos específicos, ej. Color catColor = Color.Brown, luego agrega todos los colores de tus juegos a una lista.
public static Color catColor = Color.Brown;
List<Color> colorList = new List<Color>(){ catColor }; // and other colors
float interpolation = 0f;
float interpolationRate = .01f;
.
.
.
if(playerLives == 0)
{
interpolation += interpolationRate;
if (interpolation >= 1)
{interpolation = 1;}
foreach(Color c in colorList)
{
Color.Lerp(c, Color.Gray, interpolation);
}
}
Incluso puede hacer esto para los elementos que dibuja sin tinte y Lerp the Color.White to a Color.Gray. (nómbralo como Color NoTint = Color.White y ponlo en todos tus objetos dibujados)
Probablemente hay una mejor manera, independientemente de que espero que esto ayude.