首页 > 未分类 > 将16进制颜色值转为UnityColor的正确方法,解决显示纯白色
2019
11-26

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

将16进制颜色值转为UnityColor的正确方法,解决显示纯白色 - 第1张  | 逗分享开发经验

前言

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角色

最后编辑:
作者:游戏创作者大陆