Приветствую. При Input.GetMouseButtonDown(0) вызывается эта корутина. Если сделать второй клик

в то время когда значение fillAmount меняется, то насколько я понял первая корутина останавливается и начинается вторая.

Те было значение 1. После клика должно за секунду(например) стать 0.8. Если сделать ещё один клик когда значение равно 0.9(например), то итоговое значение будет 0.7. Как сделать так чтобы итоговое стало 0.6?
Шаг 0.2.

Вопрос простой, буду раз помощи)

25 ответов

34 просмотра

Нет, первая корутина не останваливается. Её надо вручную останаливать через StopCorutine(); - вариантов несколько, смотри в документации как

XXX- Автор вопроса
Mikhail Suvorov
Нет, первая корутина не останваливается. Её надо в...

Я не хочу останавливать, хотелось бы чтобы 1ая закончилась затем запускалась вторая. Либо как то учитывалось и результат был логическим, те два клика по 0.2 значит с 1 до 0.6 результаты

XXX
Я не хочу останавливать, хотелось бы чтобы 1ая зак...

Если первая отработает своё время до того как ты запустишь следующую, то первая автоматичеки остановиться. Иначе тебе придётся останавливать первую. И там уже делать что тебе надо

XXX- Автор вопроса
Mikhail Suvorov
Если первая отработает своё время до того как ты з...

Сорян что туплю, но как реализовать, чтобы запуская вторую в то время когда первая ещё работает результат был верным. Если вторую запустить после того как первая закончила работу то вопросов нет, работает как надо.

Если я тебя правильно понял. То тебе надо просто через StopCorutine остановить первую и запустить снова вторую либо с 0 либо с предыдущего значения до 1

XXX- Автор вопроса
Mikhail Suvorov
Если я тебя правильно понял. То тебе надо просто ч...

Логично, да. Работает первая, запускаю вторую: останавливаю первое, беру значение fillAmount в момент остановки — это будет значение v_start для 2ой корутины, а v_end будет v_start - v_end(первой корутины) + v_end первой.

XXX- Автор вопроса
Mikhail Suvorov
Кинь код.

https://pastebin.com/CUBubWay

XXX- Автор вопроса
Mikhail Suvorov
Почему бы просто не v_end - для второй

Потому что v_start для 2ой корутины меньше чем значение fillAmount во время остановки первой). Если не учитывать этот момент будет "прыжок"

XXX
https://pastebin.com/CUBubWay

Вот попробуй такой вариант https://pastebin.com/05m8eUyB

Зачем ? По идее всё должно отработать норм. если только чтобы GC подхватил её

XXX- Автор вопроса
Mikhail Suvorov
Зачем ? По идее всё должно отработать норм. если ...

К сожалению нет(, добавил print(barImage.fillAmount); для наглядности. Результат должен быть 0.6, так как запущены два корутины с шагом 0.2 — DoFillAmount(barImage, barImage.fillAmount, barImage.fillAmount - 0.2f, 1f);

Mikhail Suvorov
Зачем ? По идее всё должно отработать норм. если ...

Если корутину стопнуть, то значение переменной _fillAmount не становится null. Но корутина стопнется, да. В данном случае, код сработает. Но при нажатии все равно будет стопаться корутина, которая и так могла ранее остановиться, так как переменная не нул. В некоторых случаях незнание этого нюанса не даст нужного результата =). Это я просто душню. В актуальном вопросе не надо, но вот в моем примере очень надо было)

Погоди, ты делаешь что типо откусывания картинки ? На каждый клин всё меньше и меньше должно быть ?

XXX
Да

Ок, тогда сейчас перепишу =)

https://pastebin.com/TBrd0VMM

XXX- Автор вопроса
Mikhail Suvorov
https://pastebin.com/TBrd0VMM

Это кажется костыли, но работает вроде. Хотя если 3 раза быстро нажать то будет значение такое как и если нажать 2 раза.

XXX- Автор вопроса
XXX- Автор вопроса

В дотвин есть OnTweenStop какой то? Те события вызывается когда твин стопается. Это поможет решить проблему, можно сохранить значения нужные для 2го запуска твина

XXX- Автор вопроса
Mikhail Suvorov
Там проверка есть IsPlaying

Ладно, покопаюсь. Спасибо большое)

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта