前言
HEX16进制颜色值转化为RGB原理非常简单:取前两位,化为10进制,即为R;取中间两位,化为10进制,即为G;取后两位,化为10进制,即为B。
但如果用这个RGB数值去new一个Color的话,得到的颜色却总是为白色或黑色。
原因
Unity Color构造方法里的三个(或四个,如有alpha)参数的取值并不是0-255,而是0-1,它们代表的是颜色百分比。我们需要将RGB数值与255相除,获得所需的比例数值。
代码
//16位颜色转换为UnityColor 颜色
public Color GetColor(string color)
{
if (color.Length == 0)
{
return Color.black;//设为黑色
}
else
{
//#ff8c3 除掉#
color = color.Substring(1);
int v = int.Parse(color, System.Globalization.NumberStyles.HexNumber);
//转换颜色
return new Color(
//int>>移位 去低位
//&按位与 去高位
((float)(((v >> 16) & 255))) / 255,
((float)((v >> 8) & 255)) / 255,
((float)((v >> 0) & 255)) / 255
);
}
}
后记
别人的博客追求文章质量,我的文章质量太渣,只能靠数量了。
引用资料
1、[头图]【Unity】Unity-Japan UnityChanSD角色