Basically, you define a set of meaningful identifiers for colors, representing where/how each color is used (e.g. “buttonBackground”), and not the colors themselves (e.g. “darkBrown”).
Then, elsewhere, you map each idenfier to an actual color value. The elements where colors are to be applied never directly refer to actual, specific colors, but only to semantic color ids.
This decoupling allows to quickly and flawlessly change colors to multiple elements in a centralized way, and to easily implement some form of “color skinning” by applying different id -> color mappings.
Our system is composed by three core elements:
Palette: a named set of id -> color mappings. It is a “data” element, usually persistent.
Palette provider: an active element, living in a Unity scene, that acts as a broker between palettes and colorers, pushing color updates to any relevant colorers.
Colorer: an active element that contains the logic to apply one or more colors to a scene component (UI elements, 3D models materials and more). A colorer must be connected to a palette provider, from which it retrieves colors for the color identifiers specified in its configuration.
Ready to use Colorers for Unity components using color properties (UI elements, Materials etc) are included. That said, programmers can easily extend the system with additional custom colorers (and providers).
The package includes the complete source code of:
Moreover, extensive documentation is provided, including a user manual and an API reference useful to customize and extend the system.
Buy it from the Asset store and start improving your color management workflow today!