如何使用TryParseHtmlString将十六进制转换为Color(RGBA)

时间:2017-10-26 19:43:30

标签: c# unity3d colors

如何使用HEX值更改Unity中的按钮颜色?
我尝试了这个,但它没有用,也许我在这里犯了一个错误:

btn.image.color = ColorUtility.TryParseHtmlString(DADADAFF, out color); 

1 个答案:

答案 0 :(得分:5)

您要将bool指定给Color(btn.image.color)。

如果成功,

ColorUtility.TryParseHtmlString会返回bool而非Color。您将获得第二个参数中的输出颜色,然后将其分配给Button。仅在ColorUtility.TryParseHtmlString返回true时才使用输出颜色。

下面是代码的样子:

string htmlValue = "#FF0000";
Button btn = GetComponent<Button>();

Color newCol;

if (ColorUtility.TryParseHtmlString(htmlValue, out newCol))
{
    btn.image.color = newCol;
}

将颜色转换回十六进制:

Color newCol = Color.red;
string htmlValue = ColorUtility.ToHtmlStringRGBA(newCol);
  

所以没有办法只是分配Hex颜色而不检查它   可以先转换为RGB吗?

有。删除if语句。

ColorUtility.TryParseHtmlString(htmlValue, out newCol);
btn.image.color = newCol;

请勿执行此操作,因为Color结果可能有误。您应该使用if语句处理此问题,就像我在第一个代码中所做的那样。