gpt4 book ai didi

c# - 为什么将颜色更改为黄色而不以编程方式统一使用 sprite Renderer?

转载 作者:行者123 更新时间:2023-12-01 15:11:24 26 4
gpt4 key购买 nike

我有一朵花,花瓣是单独从茎上摘下来的:

enter image description here

我可以使用以下脚本将花瓣更改为绿色或黑色:

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;
}
}
}

enter image description here

但奇怪的是,颜色不会随之变成黄色:

flower.transform.GetChild(i).gameObject.GetComponent<SpriteRenderer>().color = Color.yellow;

请注意,Random.range() 不是问题所在。它只是无法更改为黄色/或白色,但是 blackgreen 等颜色都可以。

请原谅我再问一个问题,0-1rgba 的颜色表示是 Photoshop 表示中的 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) 在 Unity 中?

仅供引用,花瓣的spriteRenderer属性如下,我使用的是Sprite-Default Material : enter image description here

编辑:

按评论要求添加原始 Sprite 表:

enter image description here

最佳答案

您需要将花 Sprite 的花瓣设为白色。 (即在您的 Sprite 编辑软件中更改它们,而不是在 Unity 中)。这将允许您在编辑器中更改 Sprite 的颜色。

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

问题不在于你的代码;问题是 Sprite 的着色器是如何工作的。 sprite-default 着色器的工作原理是将您正在更改的 color 字段乘以 Sprite 的实际 RGB 值。如果 RGB 字段之一的值在 Sprite 的纹理中为 0,那么将它乘以某个值将意味着它仍然是 0。我认为这就是你正在发生的事情。

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

如果您有兴趣,可以下载 Unity 内置着色器的源代码 Here .

关于c# - 为什么将颜色更改为黄色而不以编程方式统一使用 sprite Renderer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43012988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com