0
\$\begingroup\$

In Unity's editor I have set a swatch with some colours that are used throughout our game:

The colour picker, with an added swatch of colours

This swatch is saved in a file in the project's Assets folder:

\ProjectFolder\Assets\Editor\Main Colors.colors

I would like to use the colours in this swatch somewhere in a script:

GetComponent<Graphic>().color = SomethingHere.MainRed;

What is the best way to do this? Or is it not possible?

Reflection

I also think that I'm doing something really strange? I couldn't find any answer to this question online. But having the same colour library in the scripts as I use in the editor would be really nice.

\$\endgroup\$
2
\$\begingroup\$

Better solution would be just to create ScriptableObject, with List<Entry>:

class Colors: ScriptableObject 
{
    [System.Serializable]    
    public class Entry 
    {
         public string name;
         public Color color;
    }

    public List<Entry> colors = new List<Entry>();

    public Color GetColor(string name) 
    { 
         var entry = colors.Find(c => c.name == name);
         if (entry != null) {
              return entry.color;
         }
         return Color.white;
    }
}

and later set that scriptable object anywhere you want.

Colors colors_db;
var color = colors_db.GetColor("MainRed")

Color preset you've saved is basically the same, but it's Editor only object.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.