将16进制颜色值转为UnityColor的正确方法,解决显示纯白色

前言
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角色
诶,“16位颜色”这个说法有点不准确,应该是“16进制”。第一眼看到死活没想明白为啥有颜色是 16 位的,又想了半天为啥只用前两位中间两位和末两位哈哈。
哦哦哦,我们平时上班叫习惯了
野兔现在是从事前端类还是设计类的工作啊?
客户端开发。
已修正。
笨兔子笨兔子笨兔子,重要的事情重复三次
笨兔子笨兔子笨兔子笨兔子笨兔子笨兔子,重要的事情重复六次
哇广告好丧心病狂啊,文章前有文章后有窗口顶有文档末还有