Использование асинхронного кода (async / await) в C# в Unity. Разбираем на примерах

  Рет қаралды 12,794

Лавка Разработчика

Лавка Разработчика

Күн бұрын

Пікірлер: 47
@viktorkobylyanskyy102
@viktorkobylyanskyy102 3 жыл бұрын
Топовый канал, нужно больше просмотров, Очень структурно и понятно все спасибо вам.
@trytowinunity1445
@trytowinunity1445 3 жыл бұрын
Спасибо за видео и объяснение ;) ты очень помогаешь развивать мозг!)
@antonpashkevich5061
@antonpashkevich5061 2 жыл бұрын
Спасибо, реально объясняешь легко и просто. Даже я понимаю :3
@samserious5483
@samserious5483 Жыл бұрын
Привет, спасибо за видео, познавательно! Но уже пора продолжение выкатывать:)) Как их грамотно завершать и как вообще их лучше использовать, кейсы
@psy_gamer
@psy_gamer 3 жыл бұрын
Ролик отличный! Но я ждал именно завершение выполнения асинхронного метода!)
@ДенисШепелёв-ф3ч
@ДенисШепелёв-ф3ч 3 жыл бұрын
Спасибо за видео! Если есть возможность, затрагивайте больше паттернов, пожалуйста
@RimuruDev
@RimuruDev 2 жыл бұрын
Интересная тема. С нетерпением ждем продолжение.
@АндрейПрокофьев-е7д
@АндрейПрокофьев-е7д 3 жыл бұрын
давно хотел начать разбираться с асинхронностью:)
@PS-vj6jz
@PS-vj6jz 2 жыл бұрын
Да, паттерны это хорошо. Видео хорошие. Было бы больше подписчиков)
@Fenix72rus
@Fenix72rus 3 жыл бұрын
Очень полезный урок. Спасибо!
@Fenix72rus
@Fenix72rus 3 жыл бұрын
Жду урок про остановку
@pepsiCharp
@pepsiCharp 6 ай бұрын
Бро, отлично!!!
@ИграетБуянит
@ИграетБуянит 2 жыл бұрын
Топ. Спасибо большое!
@astyd256
@astyd256 2 жыл бұрын
Спасибо за видео всё очень понятно объяснил!
@ilya1639
@ilya1639 Жыл бұрын
Если Task.Yield не равен deltaTime, то как это поправить?
@def6141
@def6141 3 жыл бұрын
Класс но тема сисек не раскрыта, нужно продолжение👍
@xagent
@xagent Жыл бұрын
можете сделать видео про UniTask? На собеседованиях несколько раз спрашивали про них, а инфы немного
@shtolyan
@shtolyan 2 жыл бұрын
Не понял только как происходит работа с Monobehaviour из других потоков. Почему код работает?
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Потому что это на самом деле не многопоточность в прямом смысле слова. Это "многопоточность". Я зря об этом не упомянул, но это специальный юнитевский async/await, который имитирует многопоточность, но на самом деле работает в основном потоке юнити. Так называемый синтаксический сахар. Грубо говоря, чтобы заменить костыльные корутины, добавили костыльный async/await
@kitws
@kitws 3 жыл бұрын
Большое спасибо! Жаль без подробностей про Task.Yield и завершение вторичных потоков в Unity...
@gamedevlavka
@gamedevlavka 3 жыл бұрын
Будет в отдельном видео
@AndreyDioX2000
@AndreyDioX2000 2 жыл бұрын
Самый главный вопрос: когда ждать продолжение про async await?
@gamedevlavka
@gamedevlavka 2 жыл бұрын
Скоро)
@toxicknight3079
@toxicknight3079 Жыл бұрын
Уже год прошел, а видео с продолжением этой темы так и не появилось(
@СветозарБоголюбов
@СветозарБоголюбов 2 жыл бұрын
В документации написано, что когда в процедуре встречается await, то компилятор способен понять, что она асинхронная. Модификатор async был введен лишь для поддержки кода до 5 версии C#, чтобы разрешенные тогда идентификаторы await в таком коде продолжили работать. Типа теперь async однозначно приказывает компилятору воспринимать await как ключевое слово, а не идентификатор.
@ВасилийМигулин-т1й
@ВасилийМигулин-т1й 3 жыл бұрын
Я конечно не эксперт, но не понял чем же это лучше корутинов (код явно не стал проще и меньше)
@mistertwink
@mistertwink Жыл бұрын
Я понимаю, что видео вышло год назад, но вдруг. Есть вопрос по поводу использования этого метода. Я реализовываю кликер, где по нажатию на кнопку улучшения начинают автоматически начисляться очки, для этого использую как раз асинк эвейт, но если на ту же кнопку нажать снова, то счетчик прибавляется очень неравномерно. Таск дэлей у меня секунда. При первом нажатии раз в секунду начисление. При втором и последующих нажатиях получается совсем не секунда, а как-то прерывисто. Может, кто-то подскажет, в какую сторону думать
@gamedevlavka
@gamedevlavka Жыл бұрын
Похоже у тебя запускается ещё одна процедура, когда ещё первая работает, нужна проверка
@mistertwink
@mistertwink Жыл бұрын
@@gamedevlavka ого, спасибо за ответ. Наверняка так и есть, потому что асинхронный метод вызывается заново, как я понимаю. Но к сожалению не понимаю, как остановить первый метод и тут же снова запустить его с уже новыми значениями переменных...
@Bushido_Cat
@Bushido_Cat 7 ай бұрын
@@mistertwink Task t1 = Task.Run(function).ContinueWith((t1) => { logik }, TaskScheduler.FromCurrentSynchronizationContext()); await t1;
@luckyrider1
@luckyrider1 2 жыл бұрын
async/await не многопоточный. Проверить потоки можно выведя в лог id текущего потока в котором работает метод Thread.CurrentThread.ManagedThreadId
@Tera-h7e
@Tera-h7e 2 ай бұрын
Потому что ожидания происходят вообще не в одном из потоках, а в очереди операционной системы на уровне железа. Так же можно с помощью Run создавать поток в пуле потоков и использовать как отдельный поток, но если нужно больше контроля над ним, то лучше Thread для этого использовать.
@ivanfilatov5482
@ivanfilatov5482 Жыл бұрын
А что за плагин показывает имена переменных в вызове функций? Платный?
@catnexu
@catnexu 3 жыл бұрын
Это ж копия видео Tarodev по сути, не похоже на вас. Стоило бы добавить, что стандартный async/await может и замена корутинам, но только в разовых операциях, на потоке он в несколько десятков раз медленнее и нужно использовать оптимизированный uniTask
@gamedevlavka
@gamedevlavka 3 жыл бұрын
Да, я изучал эту тему с разных сторон, и Tarodev привёл отличные примеры, в плане понятности. Не скажу, что сделать копию было намеренным действием, скорее его видео слишком на меня повлияло и так вышло. Да, там стоит добавить многое, и это будет в будущих видеороликах. В т.ч. UniTask, например, и тонкости работы юнитековского асинхронного кода
@СветозарБоголюбов
@СветозарБоголюбов 2 жыл бұрын
Что-то сомнительно, что нативный async/await медленнее корутин. Как раз наоборот должно быть, корутины это костыль, имитирующий асинхронность, пока юнити не поддерживал async в C#. Где можно про это узнать подробнее? Я погуглил и не нашел ничего про "медленнее в десятки раз".
@catnexu
@catnexu 2 жыл бұрын
@@СветозарБоголюбов Держи kzbin.info/www/bejne/nZTNZJ6ae8ZkbKs
@СветозарБоголюбов
@СветозарБоголюбов 2 жыл бұрын
@@catnexu Спасибо за ролик, интересный канал. Но по-моему, здесь что-то не то с тестом, или конкретная версия юнити криво реализовывала async C#. Надо перепроверять. К тому же даже в этом тесте оптимизированный async быстрее корутин.
@catnexu
@catnexu 2 жыл бұрын
@@СветозарБоголюбов причем тут юнити и c#? Да, может в c# 9.0 оптимизировали асинхронщину, нужно актуализировать тест, но то, что "оптимизированный async быстрее корутин" никак не противоречит тому, что я вначале написал, ты путаешь горячее с теплым. В ролике на этом канале об оптимизации нет ни слова, а в тех тестах оптимизированная версия строится на том же UniTask P.S. Мне то пофиг, можешь пользоваться чем хочешь, но когда дело дойдет до публикации, например, на Itch.io и ты будешь билдить под веб, ни один твой дефолтный asynk/await не будет работать и тебе в любом случае придется изучать юнитаски или другие фреймворки на структурах
@ИгорьСлепков-х3с
@ИгорьСлепков-х3с Жыл бұрын
Корутины, о которых говорилось в видео. kzbin.info/www/bejne/oZSQY4uVfdKni68si=ITXyG8o6cduPK86d
@bakiworld8025
@bakiworld8025 2 жыл бұрын
Не хорошо воровать видео с других каналов) kzbin.info/www/bejne/jYqQnp5jj6x0p5o
REAL or FAKE? #beatbox #tiktok
01:03
BeatboxJCOP
Рет қаралды 18 МЛН
“Don’t stop the chances.”
00:44
ISSEI / いっせい
Рет қаралды 62 МЛН
UniTask: How It Replaces Coroutines, Tasks and Awaitable
24:49
ВСЕ ПРО АСИНХРОННОСЬ В UNITY! Ч.1. От корутин до async/await и UniTask
16:28
Что такое делегаты в С#? Как их можно использовать в Unity?
23:11
РАЗБОР собеседования на 4000$ - Unity Developer | Вопросы Hard и Soft, тестовое, livecoding
25:34
Мирошкин Олег | Состоятельный геймдев
Рет қаралды 13 М.
async/await в ASP.NET Core. Асинхронный код
27:42
Семен Алексеев | Программирование
Рет қаралды 32 М.