a black image's color can not be changed in Unity

时间:2015-04-29 00:28:06

标签: image colors unity3d

the color of a black image , or the black part of a image, can not be changed. example

I set the image's color to red, but the image is still black.

Is that a desired feature?

What i want is , the image is changed to red.

the Unity version is 5.0.1f. I am using the new UI.

4 个答案:

答案 0 :(得分:6)

要了解问题的根源,您必须了解“改变颜色”的工作原理。这只是一个简单的乘法。在RGB术语中,“黑色”是(0,0,0)的向量 - 并且很明显,无论你将0乘以,它都会保持黑色。

如果您希望模板图像能够更改为任何颜色,请使用白色。

要以更复杂的方式修改颜色,您必须了解Color组件的Image属性的工作原理。 UI系统隐藏了很多复杂性(并且它很好)。基本上,Color修改网格的顶点颜色。由于您通常不指定材质,因此使用默认的精灵材质,并使用默认的精灵着色器。在这个着色器中,当它绘制屏幕上的像素时,它会将顶点颜色乘以在此像素处采样的纹理颜色,这就是它产生最终结果的方式。如果你想要以不同的方式组合颜色,你将不得不编写一个自定义着色器 - 这真的不是那么难,但你可能不需要它在你想要做的范围内这个问题。

答案 1 :(得分:1)

黑色保持黑色。

然而,白色会随着您选择的颜色而改变,因此如果您使用图像编辑器并使图像为白色而不是黑色,则图像可以是您在Unity中选择的任何颜色。

答案 2 :(得分:0)

检查您的图片是否有Alpha通道。您可以使用GIMP或Photoshop执行此操作。如果是,请检查着色器/材质以确保它设置为透明/漫反射(而不仅仅是漫反射)。漫反射仅不会将alpha属性应用于材质。

此外,看起来您没有分配材料...

答案 3 :(得分:0)

确保您使用过yourImage.canvasRenderer.SetColor

例如:

damageAnim.canvasRenderer.SetColor (new Color (255, 255, 255, 255));