我有一朵花,花瓣是从茎上分开的:

我没有问题,用以下脚本将花瓣改为绿色或黑色:
private void Start()
{
flower = transform.GetChild(transform.childCount - 1).gameObject;
if (Random.Range(0, 1.0f) < 0.5f)
{
for (int i = 0; i < flower.transform.childCount; i++)
{
flower.transform.GetChild(i).gameObject.GetComponent<SpriteRenderer>().color = Color.green;// Color.yellow;
}
}
}

但奇怪的是,这个颜色不会变成黄色:
flower.transform.GetChild(i).gameObject.GetComponent<SpriteRenderer>().color = Color.yellow;请注意,Random.range()不是问题所在。它只是不能改变为黄色/或白色,但颜色,如black,green将是可以的。
请原谅我再问一个问题,来自0-1的0-1的颜色表示是0-255除以255吗?这样一个颜色的RGBA(255,255,1,255)将是Color(255/255.0, 255/255.0, 1/255.0, 255/255.0),它将出现在Color(1.0f,1.0f,0.00001f, 1.0f)中吗?
spriteRenderer的属性如下,我使用Sprite-Default材料:

编辑:
按照注释的要求添加原始雪碧表:

发布于 2017-03-25 06:49:50
你需要把花的花瓣变成白色。(也就是说,在你的精灵编辑软件中改变它们,而不是在统一中)。这将允许您在编辑器中更改sprite的颜色。
要检查这一点,只需在检查器中将Sprite Renderer组件的颜色更改为黄色即可。应该还是红色的。还请检查Sprite Renderer组件的颜色字段在运行时是否为黄色。这将使您能够确定代码是否正常工作。
问题不在于您的代码,问题在于精灵的着色器是如何工作的。sprite-default着色器的工作方式是将您要更改的color字段乘以sprite的实际RGB值。如果其中一个RGB字段的值在sprite的纹理中为0,那么将其乘以某个值将意味着它仍然是0。我想这就是你现在所发生的事。
您可以通过导入纯红色的雪碧,然后试图在检查器中更改它的颜色来看到这种情况。它就会变黑。
如果你好奇,你可以下载的源代码,团结的内置着色器这里。
https://stackoverflow.com/questions/43012988
复制相似问题