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

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

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

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

25 ответов

19 просмотров

Нет, первая корутина не останваливается. Её надо вручную останаливать через 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

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

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

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

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта