Всё про корутины в Unity 3D

  Рет қаралды 97,947

Emerald Powder

Emerald Powder

4 жыл бұрын

Вся основная информация о корутинах в Unity 3D в одном видео. Что такое корутины, что писать после yield return, как пользоваться Start Coroutine и Stop Coroutine, для чего их можно применять, и прочие тонкости связанные с корутинами в Юнити
Patreon канала - / emeraldpowder
Наш Discord - / discord
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

Пікірлер: 220
@LowPolyOne
@LowPolyOne 4 жыл бұрын
Очень долго боялся корутин. Спал со включённым светом, заглядывал под кровать перед сном, чтобы проверить, не сидит ли там какая-нибудь сопрограмма... а потом вырос и эти чудовища превратились в лучших друзей при разработке! Спасибо автору за качественный материал без воды!
@user-VaccuM
@user-VaccuM 10 ай бұрын
Жиза
@user-sc2is5gu1y
@user-sc2is5gu1y 4 жыл бұрын
Корутины наше всё. Для меня инфа не новая, но новичкам будет очень полезно. Спасибо за развивающий контент отличного качества. Его на рутюбе очень мало.
@gaitavr1992
@gaitavr1992 4 жыл бұрын
Было бы неплохо еще рассказать что такое IEnumerator, moveNext, current и Reset. Так сказать для полноты картины)
@zerocode2909
@zerocode2909 3 жыл бұрын
Это нативный C#. Вкратце IEnumerator- интерфейс перечисления. Current - выдать выбранный элемент списка. moveNext - Переключиться на следующий элемент списка. Reset - сбросить "счётчик" (начать перечисление с начала) P.S Это очень поверхностоное объяснение, лучше найдите статью на эту тему
@gaitavr1992
@gaitavr1992 3 жыл бұрын
@@zerocode2909 Я знаю ответ на вопрос, коммент к тому, чтобы зрителю об этом донести
@user-rm2gh2gc5f
@user-rm2gh2gc5f 3 жыл бұрын
@@gaitavr1992 Еще можно было бы рассказать, как тоже самое на ассемблере написать, для полного понимания))
@gaitavr1992
@gaitavr1992 3 жыл бұрын
@@user-rm2gh2gc5f Потом вот такие, как вы приходят на собеседования и не знают ничего о работе языка и движка. При чем тут ассемблер? Внутренности енумератора должен знать любой разработчик уровня мидл+. Вам лишь бы показывали как игру сделать за час да как пару скриптов накидать
@user-rm2gh2gc5f
@user-rm2gh2gc5f 3 жыл бұрын
@@gaitavr1992 Это совершенно разные уровни абстракции. У "таких как вы" сначала надо разобраться в енумераторе, а потом надо разобраться в компиляторе, Си подучить и ассемблер, потом научиться в хешредакторе программы писать, потом компьютеры собирать, а то так же непонятно, что корутина делает, пока не разбоерешся как электроны по проводам ходят. "Такие как вы", у вас вообще воспитание есть, что вы так обращаетесь к людям? "Таких как ВЫ" проводить собеседования вообще допускать нельзя. Какое, блять, ты вообще право имеешь меня с кем-то сравнивать, такиекаквыкать мне?
@illoprin
@illoprin 4 жыл бұрын
Хоть я и повсеместно использовал корутины в своем коде, но я не знал, что с помощью них можно делать такие сложные последовательности анимаций! Спасибо за интересную инфу!
@cbubg
@cbubg 4 жыл бұрын
Великолепная подача материала, большое спасибо!
@Vorono4ka
@Vorono4ka 4 жыл бұрын
Вау, благодаря этому видео смог представить как можно улучшить игру, спасибо)
@t2g4_channel
@t2g4_channel Жыл бұрын
Спасибо за толковое и легкое донесение. Еще со временем когда только изучал Unity как-то корутины как "что-то нихрена непонятное и походу взрывоопасное" и использовал только в случаях крайней необходимости, теперь надо изучить их и попрактиковать! Спасибо!
@thisismaqsa4633
@thisismaqsa4633 3 жыл бұрын
Очень много полезной информации в одном коротком видео. Спасибо!
@user-ip7pb6kt1h
@user-ip7pb6kt1h 4 жыл бұрын
Спасибо за видос! Когда начинал, никак не мог понять как всю логику запихнуть в апдейт, потом открыл корутины и жизнь стала проще
@psy_gamer
@psy_gamer 4 жыл бұрын
Твои уроки как всегда великолепны!)
@user-el2wb4ze3y
@user-el2wb4ze3y 4 жыл бұрын
Спасибо, очень полезный материал. Так держать!Всё круто!
@festi7399
@festi7399 Жыл бұрын
Спасибо, то что нужно было в ролике, ты лучший!
@mykytamarkianov4870
@mykytamarkianov4870 4 жыл бұрын
Четкий видос) Еще бы про Async Await-ы такой же)
@insaneone-7220
@insaneone-7220 4 жыл бұрын
Полезный материал, думаю многие наконец перестанут бояться корутин)
@YasnaKo
@YasnaKo 2 жыл бұрын
Два любимых русскоязычных геймдев блогера в одном месте, мимими
@mukagame5299
@mukagame5299 Жыл бұрын
Не думал тебя тут увидеть) Смотрю твои видео, спасибо что даёте такие ценные знания
@KotleKettle
@KotleKettle Жыл бұрын
Ничего не понял, автор слишком быстро показывает и тараторит. Не понимаю, откуда столько хвалебных отзывов.
@user-qk6xb1rz4f
@user-qk6xb1rz4f 4 жыл бұрын
Спасибо огромное. Благодаря Вам мой код сократится на множество строк.
@user-pz9iu8go6m
@user-pz9iu8go6m 4 жыл бұрын
Когда только начинал в юнити, сразу же потребовалось создать спавнер врагов, но к сожалению не смог быстро отыскать нужную (и ПОНЯТНУЮ) инфу по корутинам в Unity. Наткнулся на Invoke и собственно им и пользовался (и придумывал много костылей), а оказывается всё было так просто. Спасибо!
@akstis4183
@akstis4183 4 жыл бұрын
Давно ждал этого урока. Пока никто не объяснил что они такое зачем нужны и т.д. Спасибо
@skf-wm7ft
@skf-wm7ft Жыл бұрын
Круто! Очень хорошо объяснил👍
@sirj3714
@sirj3714 3 жыл бұрын
Просто огонь! Пойду гляну что там еще на канале интересненького :D
@user-vb3py4jv7n
@user-vb3py4jv7n 3 жыл бұрын
очень здорово. долго искала такое видео
@IamTagir
@IamTagir 3 жыл бұрын
Хорошее видео. Отличная идея сделать отдельный класс с простыми корутинами на движение и прочее.
@artem-astafyev
@artem-astafyev 2 жыл бұрын
Отличный материал, спасибо
@MrDanko90
@MrDanko90 4 жыл бұрын
Спасибо.Очень познавательно!
@ruslan_yefimov
@ruslan_yefimov 2 жыл бұрын
Спасибо огромное) Из ролика понял, что можно запускать асинхронные задачи из корутин, что расширяет их область применения, очень даже. По-больше бы таких роликов на русском ютубе, и жизнь стала бы легче.
@user-jc5hl7jt5b
@user-jc5hl7jt5b 2 жыл бұрын
Отдельное спасибо за хорошие субтитры
@cheburek5116
@cheburek5116 4 жыл бұрын
первый видео ролик где я понял меньше 30% материала, наверное куча инфы, автор постарался на славу
@pavelyurchenkov8644
@pavelyurchenkov8644 4 жыл бұрын
Отличный материал!!! С меня лайк+подписка
@user-mi8rd2jd1m
@user-mi8rd2jd1m 4 жыл бұрын
Как всегда шикарно )
@samserious5483
@samserious5483 4 жыл бұрын
Отличное видео, спасибо!
@mrmelog4320
@mrmelog4320 2 жыл бұрын
Оч классный ролик все понятно и интересно:3
@vano2vano
@vano2vano 4 жыл бұрын
Отличное видео, спасибо
@andrewdobosh2153
@andrewdobosh2153 4 жыл бұрын
Очень крутые ролики у тебя)) Хотелось бы чтоб ты заснял курс для начинающих по unity, сам я андроид разработчик, но по твоим видео начинает симпатизировать и unity))
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Спасибо) Если есть опыт разработки то думаю курс для начинающих не нужен, там в юнити все довольно интуитивно
@denisgoodman4492
@denisgoodman4492 3 жыл бұрын
Шикарно. Лучшее объяснение из всех виданных как на русском, так и на английском ( :) скорость на пределе восприятия, информация очень плотно временами хочется поставить WaitForSecond (1.f);
@hey2956
@hey2956 4 жыл бұрын
Спасибо, хороший туториал
@artUSUN
@artUSUN 4 жыл бұрын
Оч годный контент, спасибо тебе огромное! Есть в планах выпустить что-нибудь про свет в 3д?)
@dmitriygray6616
@dmitriygray6616 4 жыл бұрын
Боже как же годно! Господа это лайк
@ivanm71
@ivanm71 4 жыл бұрын
Полезно, спасибо
@Salvadorioo
@Salvadorioo Ай бұрын
Что я вынес с урока: - корутина позволит тебе задерживать пчелочку на месте, а потом сделать чтобы она упала - корутина сможет спаунить с пчелки монеты - корутина заканчивается на тина, а ещё там всякие yield return ы есть, которые помогают процессы на время задерживать (на время или до выполнения какого -то условия)
@zarplatatv4556
@zarplatatv4556 4 жыл бұрын
Было бы хорошо еще посмотреть урок про много поточность в unity. А про корутины спасибо
@ivanm71
@ivanm71 4 жыл бұрын
Ultra-Money, ну, это обычную многопоточность в с# тогда надо смотреть (скорей всего). Таски и await async
@lulook2806
@lulook2806 3 жыл бұрын
Насколько я знаю, Unity не поддерживает многопоточность, и при попытке запустить ещё один поток выбрасывает исключение.
@ivanm71
@ivanm71 3 жыл бұрын
@@lulook2806 поддерживает.
@hanmayujiro1433
@hanmayujiro1433 3 жыл бұрын
@@ivanm71 async/await - механизм асинхронности и к многопоточности не имеет никакого отношения
@ivanm71
@ivanm71 3 жыл бұрын
@@hanmayujiro1433 я тред в юнити прекрасно создавал для сокетов
@knightsofthenight4459
@knightsofthenight4459 4 жыл бұрын
Какие есть способы приостановки выполнения корутины с последующим возобновлением? К примеру при появлении всплывающее подсказки на экране, объекты движущихся /анимированые с использованием корутин замерли
@cyanmargh
@cyanmargh 4 жыл бұрын
Стоило рассказать ещё про составление очередей корутин, вызов корутин по имени, передача параметров в корутины, хотя видео правда хорошее.
@just4funTony
@just4funTony 4 жыл бұрын
удивило что ты сказал что корутины не так популярны среди новичков ) Мне казалось это основа основ)
@ve1c0m
@ve1c0m 3 жыл бұрын
Ещё можно рассказать про параллельно-последовательное выполнение корутин
@rinatyagafarov5328
@rinatyagafarov5328 4 жыл бұрын
thank you for video
@toxicknight3079
@toxicknight3079 4 жыл бұрын
Вот это класс. Кучу пробелов устранил, благодаря этому видео. Запиши, плиз, в таком же обзорном стиле видео по веб запросам, ради христа. Чтоб вначале вкратце о WWW (на них куча старого кода, уроков, плагинов и тд) и потом о UnityWebRequest'ах. В идеале с парочкой примеров, как заменять в устаревшем коде www на UnityWebRequest. По этой теме на русском инфы почти никакой.
@seldemirov
@seldemirov 4 жыл бұрын
Помню как то делал корутину содержащую таймер который должен был сбрасываться в 0 в случае если объект покидал триггер. Но он не сбрасывался. В итоге открыл для себя async await. Все возможности корутин есть и даже больше, синтаксис почти тот же + вроде, нет этих проблем с отключением компонента и продолжением выполнения процесса.
@777nayman
@777nayman 2 жыл бұрын
А как сделать чтобы корутины не накладывались, допустим есть несколько обьектов при нажатии на которой он передвигается с помощью корутины с точки А в точку Б, у меня получается что пока он передвигается (допустим задал 5 секунд), я могу нажать на другой обьект и он тоже начнет свое движение. А мне нужно чтобы пока первый обьект не дошел до точки Б, другие обьекты не могли двигатся. Пробовал с переменной bool играя с true и false, что то не работает.
@MaruskaStarshaya
@MaruskaStarshaya 2 жыл бұрын
В чём преимущество использования корутины для MoveForward, например, по сравнению с размещением его в Апдейте?
@user-wv8vz6kt7z
@user-wv8vz6kt7z 4 жыл бұрын
Ray marching в HDRP/URP! И кроме этого слелай просто видео про ray marching. Думаю будет круто.
@user-sq4ff4zp9b
@user-sq4ff4zp9b 11 ай бұрын
Я прям рессмеялся когда узнал что можно вот так просто взять и вставить одну(!) строчку между двумя, и обойтись обычной корутиной, вместо того чтобы писать огромную функцию таймер с кучей архитектурных сложностей 😂😂😂
@taode2623
@taode2623 3 жыл бұрын
Приветствую друзья, может кто подскажет можно ли в рамках одного скрипта запустить респаун двух объектов, в разных точках и с разной задержкой респауна? если можно то как?
@user-qh8uw7lf8n
@user-qh8uw7lf8n 3 жыл бұрын
Было бы классно объяснить о корутине после коллизии
@gamemoments8183
@gamemoments8183 3 жыл бұрын
Скажите в чем разница между WaitForSeconds и Invoke ??
@unnamer345
@unnamer345 3 жыл бұрын
12:30 Вот только корутину нельзя остановить с помощью StopCoroutine если она запустилась прямой ссылкой.
@arsenbabaev1022
@arsenbabaev1022 3 жыл бұрын
Ожидание до нового фрейма помогло разбить генерацию чанков на мелкие задачи и пофиксить просадки фпс при подгрузке чанков (когда все выполнялось за 1 фрейм).
@brickman3171
@brickman3171 4 жыл бұрын
Покажи пожалуйста как реализовать FSM на unity.
@cgytrus
@cgytrus 4 жыл бұрын
А можно теперь про многопоточность? :)
@blvcknwh1te
@blvcknwh1te 4 жыл бұрын
Очень полезное видео! Скажи пожалуйста, обязательно ли прерывать корутину после её выполнения с помощью break, или она прерывается сама после любого yield return?
@trushkeen
@trushkeen 4 жыл бұрын
Если не вызывать ее в Update, то она выполнится один раз до конца, брейком можно завершить заранее
@blvcknwh1te
@blvcknwh1te 4 жыл бұрын
@@trushkeen понял, спасибо
@Lucio11a
@Lucio11a 2 жыл бұрын
Как раз тут вчера делал прыжок через корутины)) по заданию от препода, сделать там всякое без использования Update() Хз че людям они не нравятся :D очень гибкий инструмент...
@user-in9jv9rt4o
@user-in9jv9rt4o 4 жыл бұрын
Давай про многопоточность
@user-tu1nl4ht3t
@user-tu1nl4ht3t 4 жыл бұрын
Если дело касается анимаций, уж тем более вещей, типа "сделать ui прозрачным со временем", лучше использовать DoTween. Корутины использую только если очень нужно выполнить методы по цепочке, с задержками, и эти методы не связаны с монобехейвером. Во всех остальных случаях - только DoTween, даже твой простой пример из видео занял строчек 15, через твины это делается одной. Я не плохой человек, мне нравятся твои видео, но зачем писать хорошие анимации не одной строчкой?)
@homexp13
@homexp13 4 жыл бұрын
Это скорее просто как пример, лёгкий для понимания.
@user-tu1nl4ht3t
@user-tu1nl4ht3t 4 жыл бұрын
@@homexp13 До меня только что дошло, что видео "про корутины", значит видео ок, а мой комментарий ни к селу ни к городу)
@vladyan01
@vladyan01 Жыл бұрын
Корутины и асинхронные методы разные вещи?
@kamal.x
@kamal.x 4 жыл бұрын
Пожалуйста делай урок по Art Engine
@Tmerus
@Tmerus 3 жыл бұрын
9:05 ну... не сказал бы... иногда вместо ифов проверки более полезна или для убирания сообщения ошибки, если она не критична для тестирования, но мешает отслеживать что-то реально критичное ввиду спама в лог
@Dziepso
@Dziepso 3 жыл бұрын
Спасибо, за видео, но у меня вопрос. Можно ли записать в куратину вот это - Int a = 1, b = 1; a + b; ?
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Спасибо что смотрите :) Да, всё что можно запихать в обычную функцию будет точно так же выполняться и в корутине
@region34cg
@region34cg 3 жыл бұрын
Привет, как насчёт видео обзора по probuilder unity.
@wowka7063
@wowka7063 2 жыл бұрын
А я тут использовал их для зацикливания или нажатия с паузой при нажатии кнопки UI
@drseedon
@drseedon 4 жыл бұрын
Короютины лучшее что можно придумать. Я с их помощью полностью логику с босса сделал
@lawsonllka271
@lawsonllka271 4 жыл бұрын
Dr Seedon корутины ))
@AmbassadorOfLogic
@AmbassadorOfLogic 2 жыл бұрын
а у меня почему-то StopCoroutine(corName()) - не работает. попробовал создать экземпляр, с трудом корутина запустилась, но все равно метод остановки не работает, спасает только стополлкорутинс :"(
@lkghost7
@lkghost7 4 жыл бұрын
надоже, я думал я один ридером пользуюсь )
@MatuSS39
@MatuSS39 4 жыл бұрын
Отличный видос! А что за редактор кода используется? Уж очень приглянулся
@okely4755
@okely4755 4 жыл бұрын
Rider
@MatuSS39
@MatuSS39 4 жыл бұрын
JetBrains Rider называется, если вдруг кому тоже стало интересно
@MatuSS39
@MatuSS39 4 жыл бұрын
@@okely4755 спасибо
@prosto_chel544
@prosto_chel544 Жыл бұрын
а как передовать корутины между скриптами ?
@tarytale1582
@tarytale1582 2 жыл бұрын
Привет! Я новичок, подскажите как сделать задержку после нажатия кнопки на экране (прыжок в данном случае) прежде чем смогу нажать ее повторно. Хочу попробовать таким методом убрать многократные прыжки (я знаю что есть и другие способы убрать многочисленный прыжок, но интересно можно ли этим способом так делать).
@BastionKadabr
@BastionKadabr Жыл бұрын
вы про Input GetButton ? надо что бы в каждом кадре не повторялось использовать или down или up , что бы еще меньше на моторику пальцев влияло (если не бить по клавише) лучше Up , те действие будет выполнено не только когда кнопка нажата но и отжата
@bogotoff
@bogotoff 4 жыл бұрын
Было бы полезно рассказать как использовать yield конструкцию для создания своих корутин, т.е. без MonoBehaviour. Как используется такая конструкция в C# например для обхода массива, или хотя бы как именно вызываются корутины в MonoBehaviour
@lawsonllka271
@lawsonllka271 4 жыл бұрын
Timur Bogotov зачем?! Это уже лишнее и касается уже программирования в целом, а не юнити.
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Да, это тема широкая, в этом видео я решил не углубляться как в целом работают IEnumerator'ы и yield'ы. Но если про работу с коллекциями рассказывать то это уже скорее к С# чем к Unity относится, так что не в это видео
@bogotoff
@bogotoff 4 жыл бұрын
@@EmeraldPowder Да, всё верно. Наверное большинству это и не нужно
@sasha-clown
@sasha-clown 4 жыл бұрын
Я правильно понимаю, что это почти тоже самое, что генераторы или async/await в javascript? А то я про эти корутины слышал только из Kotlin
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Да, в C# тоже есть async/await, и их даже можно использовать в Unity почти точно так же как и корутины. Но я привык к корутинам, они более традиционные в юнити, так что их в основном использую
@hanmayujiro1433
@hanmayujiro1433 4 жыл бұрын
6:29 - можно, плиз, ссылку на картинку?
@vplotnikov
@vplotnikov 3 жыл бұрын
@@hanmayujiro1433 не за что, обращайся)
@Vl-os4gz
@Vl-os4gz Жыл бұрын
7:44
@user-zr5dx4kg3x
@user-zr5dx4kg3x 3 жыл бұрын
Случайно увидел это видео, в общем для новичков полезно. Но далеко не ВСЁ о корутинах!!! Автор, зря вы про то что try/catch ВЕСЬ ГЕЙМДЕВ не использует, это далеко не так. Про try/catch в корутинах важно было сказать что нельзя делать так: private IEnumerator MyCoroutine() { try { yield return null;
@chizhikovdanilgamedev
@chizhikovdanilgamedev 4 жыл бұрын
Братан, не плохо объяснил, но ошибка многих. Корутина регистрируется как ты и сказал в главном потоке Unity, но даже после остановки ее по мере выполнения кода или ручной остановки, ещё живёт в самом потоке, по этому с корутинами нужно быть осторожным. Они на первый взгляд не тяжёлые, но они очень даже дорогие и хоть этого часто не видно, но корутина сама по себе чуть замедляет выполнение кода, ну как я и сказал, она не дешёвая
@lawsonllka271
@lawsonllka271 4 жыл бұрын
MBSCore ну это потому что все данные в корутине живут пока она не завершится, в след. кадре.
@MaruskaStarshaya
@MaruskaStarshaya 2 жыл бұрын
чел, ты можешь запустить 10 000 корутин и ничего не упадёт. А можешь одним циклом while в Апдейте полностью скрашить приложение - теперь еще раз подумай насколько они "тяжёлые")
@user-pr9xd3nd2q
@user-pr9xd3nd2q 4 жыл бұрын
Объясни пожалуйста, что такое корутина "под капотом" как они связаны между собой и почему остановка корутины осуществляется, в том числе, через "break".
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Это тоже тема интересная, но уже скорее не про юнити а про C#, да и тянет на отдельное видео
@user-pr9xd3nd2q
@user-pr9xd3nd2q 4 жыл бұрын
@@EmeraldPowder был бы рад такому видео, так как впервые на детальное объяснение напоролся лишь спустя 2 года коммерческой разработки)
@themaither1383
@themaither1383 3 жыл бұрын
корутины: существуют люди: Thread.Sleep(TimeSpan.FromSeconds(5));
@ilyanaumov4251
@ilyanaumov4251 3 жыл бұрын
Получается корутины работают асинхронно?
@Grim_J0nes
@Grim_J0nes 3 жыл бұрын
Так в чем преимущество этого метода, я не понял, если честно. К примеру, я могу написать всю логику в методе Update с счетчиком времени и всё. Почему такую логику(со счетчиками) стоит выносить именно в корутины? просто для удобства и чтобы не заводить переменные для таймеров?
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Иногда Update лучше подходит, но когда нужно сделать 5-10 непохожих действий с интервалом в пол секунды - то придётся делать либо 10 переменных таймеров, их инициализировать и следить за порядком. Либо делать enum с 10 значениями, большой switch, и один таймер. Но вообще технически всё что можно сделать корутинами - можно и через обычный апдейт
@Grim_J0nes
@Grim_J0nes 3 жыл бұрын
@@EmeraldPowder Понял, спасибо за ответ
@BastionKadabr
@BastionKadabr 2 жыл бұрын
у кого проблемы с таймерами и остановкой корутины до начального состояния , посмотрел на англ , самый простой способ создать переменную IEnumerator типа там MyTempCorut и условие if (MyTempCorut != null) { StopCoroutine(MyTempCorut ) } MyTempCorut = типа там MyOriginalCorout(если что то есть); StartCoroutine(MyTempCorut );
@saurkfamily4465
@saurkfamily4465 4 жыл бұрын
Ты мой бог,спасибо
@greemdim4611
@greemdim4611 3 жыл бұрын
Го урок по кулдауну
@njkzchannel8609
@njkzchannel8609 4 жыл бұрын
Крутой урок. Like. Го урок по многопоточности.
@dertfin1
@dertfin1 5 ай бұрын
А корутина работает в фоновом режиме, или код после корутины будет работать только, когда корутина закончится?
@Some_kind_of_something
@Some_kind_of_something Ай бұрын
Если ещё актуально, в фоновом режиме
@dertfin1
@dertfin1 27 күн бұрын
Это аналог Thread?
@etoya413
@etoya413 3 жыл бұрын
что делать? выдаёт ошибку - Assets\Scenes\scripts\courutine.cs(19,61): error CS0117: 'Quaternion' does not contain a definition for 'indentity' (я совсем новичок в этом)
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Правильно Quaternion.identity, советую пользоваться автодополнением в студии, тогда все эти названия не надо запоминать
@etoya413
@etoya413 3 жыл бұрын
@@EmeraldPowder спасибо, очень долго не мог понять что не то
@finerace
@finerace 4 жыл бұрын
Круто! Бублик, Ананас и баранка с финиками.
@Dippps
@Dippps 4 жыл бұрын
Часто использую вместо анимации, чтобы не добавлять аниматор везде где придется.
@anatoliy9696
@anatoliy9696 4 жыл бұрын
Спасибо автору ! Вреде перспективней использовать Async - kzfaq.info/get/bejne/bct7nJl_sNjNZn0.html
@unity3d_courseu3dc78
@unity3d_courseu3dc78 2 жыл бұрын
Забыл рассказать про использование в корутинах ключевого слова break ;)
@Putin-Lox
@Putin-Lox 3 жыл бұрын
КАКАЯ ЕЩЁ НАХЕР КОРУТИНА, КОРОУТАЙН ТАМ НАПИСАНО.
@antonybe2968
@antonybe2968 4 жыл бұрын
Маленькая неточность. StopAllCoroutine останавливает только корутины, которые запущено от имени данного MonoBehaviour. Т.е. если на объекте их два, то корутины второго будут продолжать выполняться.
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Да, спасибо за поправку, я как-то непонятно про это сказал. Там вот с привязкой то ли к объекту, то ли к компоненту, как раз много всяких неоднозначностей
@antonybe2968
@antonybe2968 4 жыл бұрын
В документации к StopAllCoroutines написано так: Note: StopAllCoroutines operates only on the one script it is attached to. Я проверял, можете проверить, так оно и работает ;). Вообще документация у Unity неплохая, часто находишь там то, что по началу пропускаешь по невнимательности. Так что всем советую внимательно ее изучать, и, конечно проводить эксперименты.
@--.--
@--.-- 4 жыл бұрын
Новичкам будет полезно. Но мне кажется, все равно очень сложно объяснено. Вызову IEnumerator при помощи StartCoroutine уделено пару секунд.
@Tezla0
@Tezla0 4 жыл бұрын
Писать машину состояний - велосипед, т.к yield компилятором преобразуется в готовую машину состояний.
@EmeraldPowder
@EmeraldPowder 4 жыл бұрын
Верно, вот примерно такую же машину с enum'ом и переключением состояний друг за другом иногда встречаю в чужом уже, вместо корутин. Я когда-то смотрел через ilspy во что преобразовываются методы с yield, чтобы разобраться в этом. Но в этот видос никак не получилось впихнуть про это все)
@nooftube2541
@nooftube2541 3 жыл бұрын
Ещё одна "фича" корутин в том что они классы и yield return new создаёт множество объектов которые сборщик мусора потом должен собрать. Поэтому желательно особенно в циклах сначала создавать один илд инструкцию и каждый раз возвращать один и тот же экземпляр инструкции.
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Да, это их минус. Некоторые пытаются делать игры вообще без аллокаций, чтобы gc не влезал, тогда не подходят корутины. А так, если видишь в профайлере что сборщик много занимает, придётся постараться повыносить эти инструкции в локальные переменные, или заменить основные на yield return null, он вроде ничего не создаёт
@nooftube2541
@nooftube2541 3 жыл бұрын
@@EmeraldPowder я имею ввиду что если цикл и всегда фиксированный вейт, то написать сначала создание корутины и потом йелд одной и той же, не слишком сложно. Хотя конечно это уже оптимизация. Жаль, что только не упоминул в видео :)
@lulook2806
@lulook2806 3 жыл бұрын
Основа корутинов - средство генерации анонимных итераторов в C# при помощи инструкции yield. Можно легко написать собственную реализацию корутинов при помощи этого языкового средства. Грустно, что подобный механизм не добавляют в Java - это ведь сильно расширяет возможности языка.
@EmeraldPowder
@EmeraldPowder 3 жыл бұрын
Да, yield это вещь мощная. Думал даже сделать видос про реализацию своих корутин, чтобы объяснить как они работают, но решил что это уже слишком будет) В Java вообще ребята консервативные, не пойму как они без перегрузки операторов живут столько
@lulook2806
@lulook2806 3 жыл бұрын
@@EmeraldPowder добавить бы в Java перегрузку операторов и неуправляемые типы - был бы шикарный язык. Мне очень нравится, как в нём реализован механизм делегатов. Он универсальнее. От делегатов C# пахнет указателями на функции C++. В целом, в Java вполне можно реализовать что-то похожее на yield инструкции, только конструкция эта будет выглядеть не так элегантно, как в C#.
@davidkalinovsky1216
@davidkalinovsky1216 4 жыл бұрын
Когда выключаешь скрипт на объекте (смена enabled) ты выключаешь только Update(), а остальные методы функционируют
@antonybe2968
@antonybe2968 4 жыл бұрын
Не только, но в целом именно так. Галка не отключает компонент, она всего лишь отключает несколько событий MonoBehaviour - docs.unity3d.com/ru/530/ScriptReference/MonoBehaviour.html.
⚡ Всё про события в Unity 3D
21:38
Emerald Powder
Рет қаралды 100 М.
Indian sharing by Secret Vlog #shorts
00:13
Secret Vlog
Рет қаралды 52 МЛН
顔面水槽をカラフルにしたらキモ過ぎたwwwww
00:59
はじめしゃちょー(hajime)
Рет қаралды 36 МЛН
Can you beat this impossible game?
00:13
LOL
Рет қаралды 39 МЛН
Unity INVENTORY: A Definitive Tutorial
35:21
Coco Code
Рет қаралды 101 М.
Делаю эволюцию ИИ в Unity
17:05
Onigiri
Рет қаралды 474 М.
Следы от шин на снегу в Unity 3D [Tutorial]
23:46
Emerald Powder
Рет қаралды 63 М.
ООП вопросы на юнити собеседовании
14:11
Максим Крюков
Рет қаралды 42 М.