Слишком хорошо работающий скрипт для ScrollView

Программирование на Юнити.

Слишком хорошо работающий скрипт для ScrollView

Сообщение bossic002 09 апр 2020, 19:44

Приветствую.
У меня есть такой скрипт:
Синтаксис:
Используется csharp
 public float movementSpeed = 5f, waitTime = 10.0f;
        [SerializeField]
    private float currScroll, pastScroll;// Эти две переменные будут проверять,
    //увеличилось ли значение у scrollbar. currScroll - нынешнее значение, pastScroll - предыдущее значение

    [SerializeField]
    private float timeOfVoice, oneSecondOfVoice;
    public bool waited = false, coroutine_running = false;


    public Scrollbar SB;
    public AudioSource VoiceSource;




    // Start is called before the first frame update
    void Start()
    {
        timeOfVoice = VoiceSource.clip.length;
        oneSecondOfVoice = 1 / timeOfVoice;
        StartCoroutine(moveToBottom());

    }

    // Update is called once per frame
    void Update()
    {
       
       
       



        if (SB.value > 0 && coroutine_running == false)
        {
            StartCoroutine(moveToBottom());
        }

    }
    private void FixedUpdate()
    {

       

        currScroll = SB.value;


        if (currScroll > pastScroll)
        {
            VoiceSource.time -= 5f;
        }
       
        if (currScroll < pastScroll)
        {
            VoiceSource.time += 5f;
        }



        pastScroll = currScroll;

       


    }





    IEnumerator moveToBottom()
    {
        coroutine_running = true;
        if (waited == false)
        {
            yield return new WaitForSeconds(waitTime);
            waited = true;
        }

       
        while (SB.value > 0)
        {
           
            yield return new WaitForFixedUpdate();
            SB.value -= movementSpeed * Time.fixedDeltaTime;
        }
        coroutine_running = false;
    }
 

Проблема в том, что он работает правильно, но не так, как мне нужно. Первое условие в FixedUpdate выполняется правильно, то есть при свайпе вниз голос на несколько секунд, скажем так, возвращается назад, но вот второе тупо отправляет воспроизведение в самый конец. Контент у меня постепенно опускается вниз, а мне нужно, чтобы при свайпе и при этом постепенном движении я мог сделать свайп вверх и перемотать голос чуть вперёд. Как это можно сделать?
Вы хотите быть лишь подобием Бога, оттого и кажется вам Дарвин нелепым?
bossic002
UNец
 
Сообщения: 10
Зарегистрирован: 13 мар 2019, 17:43

Re: Слишком хорошо работающий скрипт для ScrollView

Сообщение Susanin 11 апр 2020, 14:35

Ну так у вас корутина его постоянно и опускает
Susanin
UNIт
 
Сообщения: 120
Зарегистрирован: 11 дек 2015, 10:52

Re: Слишком хорошо работающий скрипт для ScrollView

Сообщение Susanin 11 апр 2020, 16:28

Если проблема актуальна - могу предложить свой вариант.

Как я понял, Вам надо чтобы
1) файл проигрывался и при это ползунок слайдера шел вместе с ходом аудио (показывая текущий момент воспроизведения)
2) при перемещении ползунка - аудио должно не сразу переходить на то место куда указывает ползунок, а просто проматываться в ту сторону куда увели ползунок
3) при отпускании ползунка - он должен возвращаться на позицию соответствующую текущей в аудио.

я правильно понял?
Susanin
UNIт
 
Сообщения: 120
Зарегистрирован: 11 дек 2015, 10:52


Вернуться в Скрипты

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

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