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

2022-5-16 18:49| 发布者: Hocassian| 查看: 77| 评论: 0|原作者: 梓喵出没

摘要:
C:\Users\Administrator\Downloads\2019-10-13-23-2-14-129306689202500-文章归档 梓喵出没-采集的数据-后羿采集器.html

标题

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

链接

https://www.azimiao.com/4146.html

阅读量

265 人阅读

日期时间

2018-9-01

作者

梓喵·技术

正文

前言

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


路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部