Страница 1 из 2

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

СообщениеДобавлено: 26 июн 2018, 15:53
kirya_355
я хочу написать код , которые будет изменять цвет скроллбара , когда тот меняет свой размер .
Синтаксис:
Используется 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 .
кто знает как это решить, помогите.

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

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

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

СообщениеДобавлено: 26 июн 2018, 16:25
kirya_355
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 а настроить ее нормально не могу ,спасибо

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

СообщениеДобавлено: 26 июн 2018, 16:27
kirya_355
у меня начал переливаться скроллбар , что сделать с этим Mathf.PingPong(Time.time, 1) чтобы цвет зависел от размера скроллбара

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

СообщениеДобавлено: 26 июн 2018, 16:49
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, соответственно ближе к синему цвету.

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

СообщениеДобавлено: 27 июн 2018, 13:02
kirya_355
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

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

СообщениеДобавлено: 27 июн 2018, 13:18
kirya_355
кому нужно вот рабочий код
Синтаксис:
Используется 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 цвета

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

СообщениеДобавлено: 27 июн 2018, 13:22
1max1
Думаю нужно еще условие добавить, но я не уверен...
Синтаксис:
Используется 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);


п.с. как-то так, хз будет ли работать нормально, возможно будут резкие переходы)

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

СообщениеДобавлено: 27 июн 2018, 13:27
kirya_355
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,да?

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

СообщениеДобавлено: 27 июн 2018, 13:27
1max1
да, это текущий размер

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

СообщениеДобавлено: 27 июн 2018, 13:49
kirya_355
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);}

 

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

СообщениеДобавлено: 27 июн 2018, 13:51
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; // <--
}
 

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

СообщениеДобавлено: 27 июн 2018, 13:55
kirya_355
1max1 писал(а):Ты там в блокноте редачишь скрипты что ли? Установи себе нормальную ide


какая ide нормальная , посоветуйте

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

СообщениеДобавлено: 27 июн 2018, 13:56
1max1
у меня visual studio 2018 community

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

СообщениеДобавлено: 27 июн 2018, 13:57
kirya_355
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 тебе отдельное Спасибо