c# - 来自 RGB 的颜色不正确 Unity C#

标签 c# unity3d colors

所以我有一个 2D 对象,您可以使用按钮更改颜色,每个按钮都会更改对象的 Sprite 。我有一个代表红色、橙色、黄色、绿色、蓝色、紫色的 Sprite 。

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

注意:我在 android 上运行这个,粒子系统的 Material 是纯白色的,所以它不应该着色。

我将颜色 Sprite 的 RGB 值输入了五次以上。但它与 Sprite 不匹配!我不知道出了什么问题...如果您需要我附上彩色 Sprite 图片,尽管问。

最佳答案

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

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

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

new Color32(0, 37, 254);

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

关于c# - 来自 RGB 的颜色不正确 Unity C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38899817/

相关文章:

c# - Windows Server 2019 上的 Xamarin 模拟器

C# 将图像转换为文件流

C#:计算时间差异

C# 中的 Javascript 对象

更改c语言中的输入文本颜色

Java - 颜色或图像无法设置为背景

c# - EF Core2.2 : Scaffold-DbContext not working with named connection string in WPF project

c# - A* 3D 寻路 - Unity

c# - 尝试访问二维数组 Unity c# 中的实例化对象。无法访问或更改元素?

colors - 如何修改javafx colorpicker?