Unity中通过脚本修改Button按钮颜色显示异常问题如何解决
- Unity内置的
Color类构造函数接收的R/G/B/A参数均为0~1范围的浮点值,传入超过1的数值会被Unity自动截断为1。
你之前编写
button1.color = new Color(255, 0, 0);时刚好能显示红色,是因为255被截断为1,0保持原值,最终得到的是标准红色(1, 0, 0, 1),属于巧合碰对了参数效果。
当你传入(237, 85, 59)时,三个数值都远大于1,全部被截断为1,最终得到的是(1,1,1,1)的纯白色,和你预期的颜色不符。
解决方案1:将0255的色值归一化到01范围
每个颜色通道值除以255即可,注意要加f后缀标识为浮点数运算,避免整数除法丢失精度:
button1.color = new Color(237/255f, 85/255f, 59/255f); // 如需调整透明度可以传入第四个参数,范围同样是0~1,1为完全不透明
解决方案2:使用支持0~255参数的Color32类
Color32是专门对应8位通道色值的类,直接传入0~255的整数参数即可,使用更便捷:
// 第四个参数为透明度通道,255为完全不透明 button1.color = new Color32(237, 85, 59, 255);
内容的提问来源于stack exchange,提问作者Tasneem
相关产品推荐
相关产品推荐

