This package provides a semantic color management system for Unity which aims to be scalable, flexible, extensible and practical to use.
What is semantic color management?
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.
Palettes, Palette Providers and Colorers
The 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).
Improving your Workflow
Our system is designed to speed up your workflow wherever you need to use colors in Unity, with low friction and no compromises on your project organization.
Anything can be done through the inspector if you want, but it's also easy to use the system through code only, if you prefer.
Palettes can be imported from commonly used third party formats and edited in the inspector, and in more advanced scenarios can be loaded at runtime from external files.
The asset contents are laid out to be easily packaged for use in the Package Manager, if you want to easily import it (maybe including your own customizations) from multiple projects.
Where do I start?
Follow the Quick Start Guide in the Manual and you will familiarize with the basic features in just a few minutes.
After that, we suggest to install the samples and
analyze the scene (scn_SemanticColorPaletteDemo
) to see in action some more
advanced setups.
Before shipping your product, or generically if you wanna keep your project minimal, you shold understand the Packages Architecture and tune your setup accordingly.
If you want to extend the system, or need some extra detail about a specific component, you should also check the API Reference.
Anything else I should know?
The system is designed to help you handle color setup rapidly, so it doesn't
ask you for confirmation before changing colors on components and Materials
,
and the palette changes done at runtime persist (similarly to what happens
when you modify a Material
).
Consequently, a wrong colorer/palette configuration could change your scene,
Materials
or even RenderSettings
(in case of the Fog
and Skybox
colorers) in ways you might find surprising.
We recommend using a version control system (such as GIT, SVN, Perforce, PlasticSCM) to be able to rollback easily.
Warning
If you don't use any versioning system, you at least backup your project often... but then again, don't backup your project, start using version control today, you won't regret it!
Contact us
If you need technical support about this component, please write to support@binarycharm.com by specifying [Semantic Color Palette] in the subject.
We're also open to generic feedback, and we'll consider interesting feature
requests and suggestions about how to improve Semantic Color Palette
.
Basically, do not not hesitate to contact us! Check https://www.binarycharm.com for other ways to get in touch and for links to our social media presence (useful to learn about updates, new asset releases and more!).