-9 / 1 / 0
Регистрация: 02.05.2018
Сообщений: 79
|
|
1 | |
Аналог корутины без параллельного выполнения24.06.2020, 12:07. Показов 4516. Ответов 8
Здравствуйте, у меня появилась проблема. Необходимо сделать так, чтобы объект(мы говорим о 2d) передвинулся из точки A в точку B, причём лучше всего это сделать с помощью функции(просто в update засунуть не вариант) или корутины, но необходимо, чтобы во время движения этого объекта, т. е. после запуска корутины, компилятор ждал того момента, когды объект дойдёт до точки B и только тогда продолжал считывать команды.
Да, можно было бы просто взять кучу булевых переменных, кучу вложенных друг в друга корутин и т. д., или, например, засунуть всё это в Update, но когда таких функций становиться больше, то код становиться не читаемым и не редактируемым. Поясню. пусть есть например корутина doF();, которая выполняется 10 секунд, есть просто функция, которая зависит от результата работы doF(), назовём её doS(); Если запустить doF(), а за ней doS(), то результат будет неверным, т. к. во время запуска doS() результат doF() ещё не был получен, а когда таких функций становиться больше, то работать с ними совсем невозможно. Облазин все возможные форумы, перечитал документацию - ничего нету, может быть вы на своём опыте что-то, что мне подойдёт встречали?
0
|
24.06.2020, 12:07 | |
Ответы с готовыми решениями:
8
Интерактивный музей, задержка действий на время выполнения анимации и Корутины в Unity Завершение выполнения корутины Написать аналог Selenium WebDriver для выполнения действий на сайте Корутины |
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
|
||||||
24.06.2020, 12:34 | 2 | |||||
0
|
-9 / 1 / 0
Регистрация: 02.05.2018
Сообщений: 79
|
|
24.06.2020, 14:01 [ТС] | 3 |
Я это пробовал, но, как я и написал в вопросе, это весьма сложно использовать, т. к., если запустить другую функцию или корутину после этой, которая зависит от того, что объект уже прибыл, то она сработает некорректно, т.к. вторая функция не будет ждать завершения корутины
Добавлено через 1 минуту Я про то, что это будет выполнять параллельно, как бы в другом потоке(хоть это и не так), а мне нужно, чтобы всё всё выполнялось последовательно, как обычный код
0
|
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
|
||||||
24.06.2020, 14:14 | 4 | |||||
Запускай ее в этой же корутине, после while, либо сделай 3 корутину, которая будет выполнять первые 2 последовательно.
0
|
-9 / 1 / 0
Регистрация: 02.05.2018
Сообщений: 79
|
|
24.06.2020, 14:58 [ТС] | 5 |
Я и это делал, и, да, это работает, когда у тебя 3-4 функции, но, когда у тебя большой проект, много функций, в том числе и рекурсивных, но использовать это невозможно. Я спрашивал вас про то, как сделать некий аналог корутины, которые будет работать не параллельно(т.е. не в многопоточном режиме). Или я хотел бы знать, можно ли каким-либо образом использовать yield return null; вне корутины, в интернете я этого не нашёл.
0
|
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
|
||||||
24.06.2020, 15:34 | 6 | |||||
Сообщение было отмечено MaxiD как решение
Решение
Ссылку выше смотрел? Вот еще такое есть https://github.com/Cysharp/UniTask
Думаю тебе стоит смотреть в сторону асинхронного программирования, там как раз есть всякие плюшки для задержек и ожиданий. Добавлено через 27 минут
1
|
-9 / 1 / 0
Регистрация: 02.05.2018
Сообщений: 79
|
|
24.06.2020, 16:27 [ТС] | 7 |
Спасибо, я именно это и искал
0
|
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
|
||||||
24.06.2020, 17:47 | 8 | |||||
Ты особо не радуйся))
У этого всего есть малюсенькое НО. При запуске метода, если остановить режим воспроизведения в редакторе, то выполнение метода все равно продолжится Довольно неудобно будет ловить объекты в режиме редактирования по всей карте, когда они должны быть остановлены. К тому же, их свойства будут сохранены редактором. Это выглядит вот так: https://youtu.be/8etKudhxnGo Добавлено через 43 минуты Так что лучше все же корутины, тем более выглядят они почти также, только значение из них не вытянешь без костылей:
0
|
-9 / 1 / 0
Регистрация: 02.05.2018
Сообщений: 79
|
|
24.06.2020, 19:05 [ТС] | 9 |
Да не, мне всё подходит, у мне все объекты создаются в игре, в редакторе до запуска ничего нету
0
|
24.06.2020, 19:05 | |
24.06.2020, 19:05 | |
Помогаю со студенческими работами здесь
9
Корутины Корутины и потоки Про корутины Пролагивают корутины в Unity Анимация в unity и корутины Про корутины 2 часть Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |