//必须进行归一化处理0--1 void getColor() { float aa = convertColor("ff0000").a / 255; float rr = convertColor("ff0000").r / 255; float gg = convertColor("ff0000").g / 255; float bb = convertColor("ff0000").b / 255; transform.GetComponent<Image>().color = new Color(rr, gg, bb, aa); } private Color convertColor(string colorString)//16进制颜色值 { int v = int.Parse(colorString, System.Globalization.NumberStyles.HexNumber); return new Color() { //a = Convert.ToByte((v >> 24) & 255), a = 255, r = Convert.ToByte((v >> 16) & 255), g = Convert.ToByte((v >> 8) & 255), b = Convert.ToByte((v >> 0) & 255) }; }
网上查到可以不进行归一化的方法,自我测试没通过,但是记录一下 UnityEngine.Color uses 0-1 ranges for the 3 RGB values, new Color(1,0,0); //Red UnityEngine.Color32 uses 0-255 on all 4 channels (RGBA) new Color32(255, 0, 0, 255); //Red new Color32(255, 0, 0, 125); //Red, semi transparent (alpha channel reduced)
把16进制颜色值转换为RGB或ARGB颜色
最新推荐文章于 2024-08-10 22:56:59 发布