//必须进行归一化处理0--1
void getColor()
{
float aa = convertColor("ff0000").a / 255;
float rr = convertColor("ff0000").r / 255;
float gg = convertColor("ff0000").g / 255;
float bb = convertColor("ff0000").b / 255;
transform.GetComponent<Image>().color = new Color(rr, gg, bb, aa);
}
private Color convertColor(string colorString)//16进制颜色值
{
int v = int.Parse(colorString, System.Globalization.NumberStyles.HexNumber);
return new Color()
{
//a = Convert.ToByte((v >> 24) & 255),
a = 255,
r = Convert.ToByte((v >> 16) & 255),
g = Convert.ToByte((v >> 8) & 255),
b = Convert.ToByte((v >> 0) & 255)
};
}
网上查到可以不进行归一化的方法,自我测试没通过,但是记录一下
UnityEngine.Color uses 0-1 ranges for the 3 RGB values,
new Color(1,0,0); //Red
UnityEngine.Color32 uses 0-255 on all 4 channels (RGBA)
new Color32(255, 0, 0, 255); //Red
new Color32(255, 0, 0, 125); //Red, semi transparent (alpha channel reduced)