как изменить цвет scrollbar?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

как изменить цвет scrollbar?

Сообщение kirya_355 26 июн 2018, 15:53

я хочу написать код , которые будет изменять цвет скроллбара , когда тот меняет свой размер .
Синтаксис:
Используется csharp
public float time;
public Scrollbar scroll;
void Update(){
 
   scroll.size = time / 10;
 if (time > 0)
                {
                    time -= Time.deltaTime;
                }

}
 

так вот решил вставить вот такую конструкцию
Синтаксис:
Используется csharp
 scroll.NormalColor = Color.Lerp(Color.red, Color.blue, Mathf.PingPong(Time.time, 1));


но unity ругается на конструкцию"NormalColor",даже если писать её маленькими буквами , еще вместо этого "Mathf.PingPong(Time.time, 1)" поставить что-то другое , чтобы зависело от size .
кто знает как это решить, помогите.
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение 1max1 26 июн 2018, 16:05

Ты там в блокноте редачишь скрипты что ли? Установи себе нормальную ide, NormalColor нет такого свойства у скролбара.
Синтаксис:
Используется csharp
        var cblock = scroll.colors;
        cblock.normalColor = Color.Lerp(Color.red, Color.blue, Mathf.PingPong(Time.time, 1));
        scroll.colors = cblock;
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как изменить цвет scrollbar?

Сообщение kirya_355 26 июн 2018, 16:25

1max1 писал(а):Ты там в блокноте редачишь скрипты что ли? Установи себе нормальную ide, NormalColor нет такого свойства у скролбара.
Синтаксис:
Используется csharp
        var cblock = scroll.colors;
        cblock.normalColor = Color.Lerp(Color.red, Color.blue, Mathf.PingPong(Time.time, 1));
        scroll.colors = cblock;



так вот же редачу в visual studio 2017 а настроить ее нормально не могу ,спасибо
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение kirya_355 26 июн 2018, 16:27

у меня начал переливаться скроллбар , что сделать с этим Mathf.PingPong(Time.time, 1) чтобы цвет зависел от размера скроллбара
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение 1max1 26 июн 2018, 16:49

А причем тут пингпонг если нужна зависимость?
Самое простое сделать через коэффициент:
Синтаксис:
Используется csharp
float delta = maxSize - minSize; // к примеру 10 - 3 = 7
float currentSize = 5; // допустим 5 текущий размер
Color.Lerp(Color.red, Color.blue, (currentSize - minSize) / delta); // (5 - 3) / 7 = 0.28

Чем больше значение currentSize, тем ближе будет коэффициент к 1, соответственно ближе к синему цвету.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как изменить цвет scrollbar?

Сообщение kirya_355 27 июн 2018, 13:02

1max1 писал(а):А причем тут пингпонг если нужна зависимость?
Самое простое сделать через коэффициент:
Синтаксис:
Используется csharp
float delta = maxSize - minSize; // к примеру 10 - 3 = 7
float currentSize = 5; // допустим 5 текущий размер
Color.Lerp(Color.red, Color.blue, (currentSize - minSize) / delta); // (5 - 3) / 7 = 0.28

Чем больше значение currentSize, тем ближе будет коэффициент к 1, соответственно ближе к синему цвету.


ну это ясно , а что насчет 3 цветов , красный если 0 , зеленый если 0.5,голубой если 1 ,время мах 10 , мин 0 ,размер мах 1,мин 0
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение kirya_355 27 июн 2018, 13:18

кому нужно вот рабочий код
Синтаксис:
Используется csharp

  public Scrollbar scroll;
 public float  time;
 void Update()
    {
        var cblock = scroll.colors;
        cblock.normalColor = Color.Lerp(Color.red, Color.blue, time  / 10);//это при том что time =10, при другом времени нужно изменять "time  / 10"эту строчку
        scroll.colors = cblock;
        scroll.size = time / 10;}
 


а мне бы хотелось сделать 3 цвета
Последний раз редактировалось kirya_355 27 июн 2018, 13:23, всего редактировалось 1 раз.
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение 1max1 27 июн 2018, 13:22

Думаю нужно еще условие добавить, но я не уверен...
Синтаксис:
Используется csharp
float k = (currentSize - minSize) / delta;

if (k < 0.5f)
    cblock.normalColor = Color.Lerp(Color.red, Color.green, k * 2);
else
    cblock.normalColor = Color.Lerp(Color.green, Color.blue, k * 2 - 1.0f);


п.с. как-то так, хз будет ли работать нормально, возможно будут резкие переходы)
Последний раз редактировалось 1max1 27 июн 2018, 13:27, всего редактировалось 1 раз.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как изменить цвет scrollbar?

Сообщение kirya_355 27 июн 2018, 13:27

1max1 писал(а):А причем тут пингпонг если нужна зависимость?
Самое простое сделать через коэффициент:
Синтаксис:
Используется csharp
float delta = maxSize - minSize; // к примеру 10 - 3 = 7
float currentSize = 5; // допустим 5 текущий размер
Color.Lerp(Color.red, Color.blue, (currentSize - minSize) / delta); // (5 - 3) / 7 = 0.28

Чем больше значение currentSize, тем ближе будет коэффициент к 1, соответственно ближе к синему цвету.

так что такое currentSize ? я так понял это scroll.size,да?
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение 1max1 27 июн 2018, 13:27

да, это текущий размер
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как изменить цвет scrollbar?

Сообщение kirya_355 27 июн 2018, 13:49

1max1 писал(а):да, это текущий размер



что я делаю не так , почему он не работает
Синтаксис:
Используется csharp
public Scrollbar scroll;
public float  time;
 void Update()
    {
        var cblock = scroll.colors;      
        scroll.colors = cblock;
        scroll.size = time / 10;//время у меня от 0 до 10
        float k = (scroll.size ) / 10;

        if (k < 0.5f)
            cblock.normalColor = Color.Lerp(Color.red, Color.green, k * 2);
        else
            cblock.normalColor = Color.Lerp(Color.green, Color.blue, k * 2 - 1.0f);}

 
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение 1max1 27 июн 2018, 13:51

Цвет нужно присваивать в конце изменений.
Кстати я думаю k будет равняться просто скролсайзу
float k = scroll.size;
Синтаксис:
Используется csharp
public Scrollbar scroll;
public float  time;
 void Update()
    {
        var cblock = scroll.colors;      
       
        scroll.size = time / 10; //время у меня от 0 до 10
        float k = scroll.size;

        if (k < 0.5f)
            cblock.normalColor = Color.Lerp(Color.red, Color.green, k * 2);
        else
            cblock.normalColor = Color.Lerp(Color.green, Color.blue, k * 2 - 1.0f);

        scroll.colors = cblock; // <--
}
 
Последний раз редактировалось 1max1 27 июн 2018, 13:56, всего редактировалось 1 раз.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как изменить цвет scrollbar?

Сообщение kirya_355 27 июн 2018, 13:55

1max1 писал(а):Ты там в блокноте редачишь скрипты что ли? Установи себе нормальную ide


какая ide нормальная , посоветуйте
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

Re: как изменить цвет scrollbar?

Сообщение 1max1 27 июн 2018, 13:56

у меня visual studio 2018 community
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: как изменить цвет scrollbar?

Сообщение kirya_355 27 июн 2018, 13:57

1max1 писал(а):Цвет нужно присваивать в конце изменений.
Кстати я думаю k будет равняться просто скролсайзу
float k = scroll.size;
Синтаксис:
Используется csharp
public Scrollbar scroll;
public float  time;
 void Update()
    {
        var cblock = scroll.colors;      
       
        scroll.size = time / 10; //время у меня от 0 до 10
        float k = scroll.size;

        if (k < 0.5f)
            cblock.normalColor = Color.Lerp(Color.red, Color.green, k * 2);
        else
            cblock.normalColor = Color.Lerp(Color.green, Color.blue, k * 2 - 1.0f);

        scroll.colors = cblock; // <--
}
 


всем спасибо , все заработало , 1max1 тебе отдельное Спасибо
kirya_355
UNIт
 
Сообщения: 106
Зарегистрирован: 09 май 2018, 21:40

След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 16