如何通过代码在Unity中更改精灵渲染器颜色的Value分量?

时间:2019-02-20 01:22:03

标签: c# unity3d

我正在尝试使用HSV值更改子画面的颜色。每当我按播放键时,子画面始终变白并且HSV值都为0。

在控制台中打印时,HSV值是我输入的值,但是当我点击play时,Color Picker UI中的值是0。

我搜寻了互联网和Unity手册,但似乎找不到任何答案。

这是我的代码:

[SerializeField] float hue; //246
[SerializeField] float saturation; //48
[SerializeField] float value; //25

SpriteRenderer spriteRenderer;
CollectHearts collectHearts;

// Start is called before the first frame update
void Start()
{
    spriteRenderer = GetComponent<SpriteRenderer>();
    collectHearts = FindObjectOfType<CollectHearts>();

}

// Update is called once per frame
void Update()
{
    ChangeColor();
}

private void ChangeColor()
{
    float newHue = hue / 100;
    float newSaturation = saturation / 100;
    float newValue = value / 100;


    spriteRenderer.color = Color.
                HSVToRGB(newHue, newSaturation, newValue + collectHearts.GetHearts());

    Debug.Log(hue + " " + saturation + " " + value);

}

1 个答案:

答案 0 :(得分:1)

Color.HSVToRGB()的参数必须介于0.0到1.0之间 https://docs.unity3d.com/ScriptReference/Color.HSVToRGB.html

因此,应该更改色相的值。

[SerializeField] float hue; //246
[SerializeField] float saturation; //48
[SerializeField] float value; //25

float newHue = hue / 100;