RGB的颜色不正确Unity C#

时间:2016-08-11 14:55:16

标签: c# unity3d colors

所以我有一个2D对象,你可以改变使用按钮的颜色,每个按钮都会改变对象的精灵。我有一个红色,橙色,黄色,绿色,蓝色,紫色的精灵。

现在我有一个粒子系统(之前描述的对象的子元素),我想将startColor属性更改为与2D对象的sprite相同的颜色。我正在使用此代码(附加到您可以更改精灵的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创建的所有新颜色()。所以我取了所有颜色精灵的RGB值并插入它们。当我执行代码时,粒子的颜色与对象的精灵颜色不匹配。

注意:我在Android上运行它,粒子系统的材质是纯白色,因此它不应该着色。

我将颜色精灵中的RGB值放了五次以上。但它与精灵不匹配!我不知道出了什么问题...如果你需要我附上彩色精灵图像,请问。

1 个答案:

答案 0 :(得分:7)

你误用了Color() constructor。参考文档,请注意构造函数的参数应该是[0,1]范围内的浮点值。如果您不想计算要提供的适当值,只需将它们除以255:

new Color(0, 37/255f, 254/255f);

或者,你可以使用Color32() constructor,它取[0,255]范围内的int值:

new Color32(0, 37, 254);

ColorColor32可以隐式转换为彼此,因此不必担心投射问题。希望这可以帮助!如果您有任何问题,请告诉我。

相关问题