RGB颜色在Unity C#中不正确。

4
我有一个2D对象,使用按钮可以更改其颜色,每个按钮都会更改对象的精灵。我有红色、橙色、黄色、绿色、蓝色和紫色的精灵。
现在我有一个粒子系统(上述对象的子级),我想将其startColor属性更改为与2D对象精灵相同的颜色。 我正在使用以下代码(附加到可以更改精灵的2D对象):
        var sprite = gameObject.GetComponent<SpriteRenderer>().sprite;
        var startColor = gameObject.transform.GetChild(0).gameObject.GetComponent<ParticleSystem>().startColor;

        if (sprite == red) startColor = new Color(255, 29, 0);
        else if (sprite == orange) startColor = new Color(254, 32, 0);
        else if (sprite == yellow) startColor = new Color(254, 215, 0);
        else if (sprite == green) startColor = new Color(0, 254, 32);
        else if (sprite == blue) startColor = new Color(0, 37, 254);
        else if (sprite == purple) startColor = new Color(178, 0, 255);

        gameObject.transform.GetChild(0).gameObject.GetComponent<ParticleSystem>().startColor = startColor;

我正在尝试从RGB创建所有新的Colors()。所以我将所有颜色精灵的RGB值插入其中。但是当我执行代码时,粒子的颜色与对象的精灵颜色不匹配。
注意:我在android上运行此代码,并且粒子系统的材料是纯白色,因此不应该影响颜色。
我已经五次以上尝试将颜色精灵的RGB值插入其中。但是它们并不匹配!我不知道出了什么问题……如果您需要我附加颜色精灵图像,请告诉我。

请整理一下代码,它现在很难阅读。你不需要每次重新加载相同的精灵,只需将 gameObject.GetComponent<SpriteRenderer>().sprite 存储在一个变量中,例如 var sprite=gameObject.GetComponent<SpriteRenderer>().sprite; - Panagiotis Kanavos
你得到了什么颜色? - Jeroen van Langen
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Panagiotis Kanavos
1个回答

18
您误用了 Color() 构造函数。请参考文档,注意构造函数的参数应该是处于 [0,1] 范围内的浮点数值。如果您不想计算适当的值,则可以将它们除以 255:
new Color(0, 37/255f, 254/255f);

或者,您可以使用Color32()构造函数,它接受范围为[0,255]的int值:

new Color32(0, 37, 254);

ColorColor32可以彼此隐式转换,因此不必担心强制转换的问题。希望这能帮到你!如果您有任何问题,请告诉我。


5
为了避免整数除法,将new Color(0, 37/255F, 254/255F);翻译为:新颜色(0, 37/255F, 254/255F); - Dmitry Bychenko
@DmitryBychenko 谢谢!干得好,否则可能会导致一些意外的结果。 - Serlite
那看起来像是构造函数的缺陷,它应该抛出一个 ArgumentOutOfRangeException - user247702
@Serlite 它运行了!不管怎样,谢谢,我没有问题。 - Xephyr
1
Color32 doesn't have a constructor with just 3 arguments, you need to provide the alpha as the fourth. e.g. new Color32(0, 37, 254, 255) - jcady
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接