【问题标题】:Colors from RGB are not correct Unity C#来自 RGB 的颜色不正确 Unity C#
【发布时间】:2016-12-18 09:31:15
【问题描述】:

所以我有一个 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&lt;SpriteRenderer&gt;().sprite存储在一个变量中,即var sprite=gameObject.GetComponent&lt;SpriteRenderer&gt;().sprite;
  • 你得到什么颜色?
  • 您也可以将gameObject.transform.GetChild(0).gameObject 存储在变量中。事实上,代码是不可读的

标签: c# unity3d colors


【解决方案1】:

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

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

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

new Color32(0, 37, 254);

ColorColor32 可以相互隐式转换,所以不用担心转换问题。希望这可以帮助!如果您有任何问题,请告诉我。

【讨论】:

  • new Color(0, 37/255F, 254/255F); 防止整数除法
  • @DmitryBychenko 谢谢!很好,否则可能会导致一些意想不到的结果。
  • 这看起来像是构造函数中的一个缺陷,它应该抛出一个ArgumentOutOfRangeException
  • @Stijn 我认为 Unity 的许多方法将输入值限制在可接受的范围内(或者至少在超过最小值/最大值时不会中断) - 尽管如果它们给你会很方便更多迹象表明您使用了错误的。
  • @Serlite 它有效!奇怪与否。谢谢,我没有问题。
猜你喜欢
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 2018-11-07
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多