我正在尝试使用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);
}
答案 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;