unity 的material颜色控制问题
·
调试unity的material颜色时,需要用代码控制改变颜色。在取色板中取号颜色,拿着RGB的值赋值给material.color后发现material的颜色总是不对,后来对比了unity界面中material的取色板后发现赋值给GB通道的值是反的,如下图所示,取色板上RGB(0,203,255),代码中是RGB(0,255,203)。


查看了unity关于color的构造函数,输入参数是r,g,b,所以这里应该是有问题。material的b,g通道是反的。
//
// 摘要:
// Constructs a new Color with given r,g,b components and sets a to 1.
//
// 参数:
// r:
// Red component.
//
// g:
// Green component.
//
// b:
// Blue component.
public Color(float r, float g, float b);
//
// 摘要:
// Constructs a new Color with given r,g,b,a components.
//
// 参数:
// r:
// Red component.
//
// g:
// Green component.
//
// b:
// Blue component.
//
// a:
// Alpha component.
public Color(float r, float g, float b, float a);
另外遇到的问题是material的属性color各通道范围与unity中Color类不同,material的属性color各通道数据范围是(0~1),但Color类中r,g,b通道数据范围是(0~255)。所以如果写成如下程序运行后材质颜色是不对的:
Color trajColor = new Color(0, 255, 203);
material.color = trajColor;
应该对Color的对象进行归一化,如下:
material.color = new Color(trajColor.r/255f, trajColor.b/255f, trajColor.g/255f, trajColor.a) ;
更多推荐


所有评论(0)