Как вы изменяете компонент Value цвета рендерера спрайтов в Unity через код? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь изменить цвет спрайта, используя значения HSV.Всякий раз, когда я нажимаю кнопку воспроизведения, спрайт всегда становится белым, и все значения HSV равны 0.

При печати в консоли значения HSV являются теми, которые я ввел, но значения в пользовательском интерфейсе Color Picker равны 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 голосов
/ 20 февраля 2019

Параметры 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...