首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么不以编程方式统一使用spriteRenderer,将颜色改为黄色?

为什么不以编程方式统一使用spriteRenderer,将颜色改为黄色?
EN

Stack Overflow用户
提问于 2017-03-25 05:41:17
回答 1查看 3.7K关注 0票数 2

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

我没有问题,用以下脚本将花瓣改为绿色或黑色:

代码语言:javascript
复制
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;
        }
    }
}

但奇怪的是,这个颜色不会变成黄色:

代码语言:javascript
复制
flower.transform.GetChild(i).gameObject.GetComponent<SpriteRenderer>().color = Color.yellow;

请注意,Random.range()不是问题所在。它只是不能改变为黄色/或白色,但颜色,如blackgreen将是可以的。

请原谅我再问一个问题,来自0-10-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材料:

编辑:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-25 06:49:50

你需要把花的花瓣变成白色。(也就是说,在你的精灵编辑软件中改变它们,而不是在统一中)。这将允许您在编辑器中更改sprite的颜色。

要检查这一点,只需在检查器中将Sprite Renderer组件的颜色更改为黄色即可。应该还是红色的。还请检查Sprite Renderer组件的颜色字段在运行时是否为黄色。这将使您能够确定代码是否正常工作。

问题不在于您的代码,问题在于精灵的着色器是如何工作的。sprite-default着色器的工作方式是将您要更改的color字段乘以sprite的实际RGB值。如果其中一个RGB字段的值在sprite的纹理中为0,那么将其乘以某个值将意味着它仍然是0。我想这就是你现在所发生的事。

您可以通过导入纯红色的雪碧,然后试图在检查器中更改它的颜色来看到这种情况。它就会变黑。

如果你好奇,你可以下载的源代码,团结的内置着色器这里

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43012988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档