Mixing colors together is very common when producing color palettes. The most notable examples of this are creating tints (mixing with white), shades (mixing with black), and tones (mixing with gray), although any two colors can be mixed together. These functions are declared as extension methods in the static class Mixing.
Color red = Color.red; Color yellow = Color.yellow; Color orange = red.Mix(yellow); // 50% red, 50% yellow Color redOrange = red.Mix(yellow, 0.25f); // 75% red, 25% yellow Color amber = red.Mix(yellow, 0.75f); // 25% red, 75% yellow
By default, colors are mixed using RGB components, but any color model can be used to mix colors if specified. For example, the following mixes colors using the
HSV color model.
Color red = Color.red; Color yellow = Color.yellow; Color orange = red.Mix<HSV>(yellow); Color redOrange = red.Mix<HSV>(yellow, 0.25f); Color amber = red.Mix<HSV>(yellow, 0.75f);
See all available color models in the Conversion manual.
Tints are produced by mixing a color with white (increases lightness).
Color tint = color.Tint(0.1f); // 10% white Color same = color.Tint(0f); // no change Color white = color.Tint(1f); // pure white Color tints = color.Tints(10); // 10 tints color.TintsNonAlloc(array); // prevent heap allocations
Tints are produced by mixing a color with black (decreases lightness).
Color shade = color.Shade(0.1f); // 10% black Color same = color.Shade(0f); // no change Color black = color.Shade(1f); // pure black Color shades = color.Shades(10); // 10 shades color.ShadesNonAlloc(array); // prevent heap allocations
Tints are produced by mixing a color with gray (decreases saturation).
Color tone = color.Tone(0.1f); // 10% gray Color same = color.Tone(0f); // no change Color gray = color.Tone(1f); // pure gray (50% black / 50% white) Color tones = color.Tones(10); // 10 tones color.TonesNonAlloc(array); // prevent heap allocations