в то время когда значение fillAmount меняется, то насколько я понял первая корутина останавливается и начинается вторая.
Те было значение 1. После клика должно за секунду(например) стать 0.8. Если сделать ещё один клик когда значение равно 0.9(например), то итоговое значение будет 0.7. Как сделать так чтобы итоговое стало 0.6?
Шаг 0.2.
Вопрос простой, буду раз помощи)
Нет, первая корутина не останваливается. Её надо вручную останаливать через StopCorutine(); - вариантов несколько, смотри в документации как
Я не хочу останавливать, хотелось бы чтобы 1ая закончилась затем запускалась вторая. Либо как то учитывалось и результат был логическим, те два клика по 0.2 значит с 1 до 0.6 результаты
Если первая отработает своё время до того как ты запустишь следующую, то первая автоматичеки остановиться. Иначе тебе придётся останавливать первую. И там уже делать что тебе надо
Сорян что туплю, но как реализовать, чтобы запуская вторую в то время когда первая ещё работает результат был верным. Если вторую запустить после того как первая закончила работу то вопросов нет, работает как надо.
Если я тебя правильно понял. То тебе надо просто через StopCorutine остановить первую и запустить снова вторую либо с 0 либо с предыдущего значения до 1
Логично, да. Работает первая, запускаю вторую: останавливаю первое, беру значение fillAmount в момент остановки — это будет значение v_start для 2ой корутины, а v_end будет v_start - v_end(первой корутины) + v_end первой.
Почему бы просто не v_end - для второй
https://pastebin.com/CUBubWay
Потому что v_start для 2ой корутины меньше чем значение fillAmount во время остановки первой). Если не учитывать этот момент будет "прыжок"
Вот попробуй такой вариант https://pastebin.com/05m8eUyB
Зачем ? По идее всё должно отработать норм. если только чтобы GC подхватил её
К сожалению нет(, добавил print(barImage.fillAmount); для наглядности. Результат должен быть 0.6, так как запущены два корутины с шагом 0.2 — DoFillAmount(barImage, barImage.fillAmount, barImage.fillAmount - 0.2f, 1f);
Если корутину стопнуть, то значение переменной _fillAmount не становится null. Но корутина стопнется, да. В данном случае, код сработает. Но при нажатии все равно будет стопаться корутина, которая и так могла ранее остановиться, так как переменная не нул. В некоторых случаях незнание этого нюанса не даст нужного результата =). Это я просто душню. В актуальном вопросе не надо, но вот в моем примере очень надо было)
Погоди, ты делаешь что типо откусывания картинки ? На каждый клин всё меньше и меньше должно быть ?
Ок, тогда сейчас перепишу =)
https://pastebin.com/TBrd0VMM
Это кажется костыли, но работает вроде. Хотя если 3 раза быстро нажать то будет значение такое как и если нажать 2 раза.
Про мой код а не твой)
В дотвин есть OnTweenStop какой то? Те события вызывается когда твин стопается. Это поможет решить проблему, можно сохранить значения нужные для 2го запуска твина
Там проверка есть IsPlaying
Ладно, покопаюсь. Спасибо большое)
Ок, на ща что
Обсуждают сегодня