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

2020 ж. 16 Мам.
96 748 Рет қаралды

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

Пікірлер
  • Очень долго боялся корутин. Спал со включённым светом, заглядывал под кровать перед сном, чтобы проверить, не сидит ли там какая-нибудь сопрограмма... а потом вырос и эти чудовища превратились в лучших друзей при разработке! Спасибо автору за качественный материал без воды!

    @LowPolyOne@LowPolyOne4 жыл бұрын
    • Жиза

      @user-VaccuM@user-VaccuM9 ай бұрын
  • Корутины наше всё. Для меня инфа не новая, но новичкам будет очень полезно. Спасибо за развивающий контент отличного качества. Его на рутюбе очень мало.

    @user-sc2is5gu1y@user-sc2is5gu1y4 жыл бұрын
  • Было бы неплохо еще рассказать что такое IEnumerator, moveNext, current и Reset. Так сказать для полноты картины)

    @gaitavr1992@gaitavr19924 жыл бұрын
    • Это нативный C#. Вкратце IEnumerator- интерфейс перечисления. Current - выдать выбранный элемент списка. moveNext - Переключиться на следующий элемент списка. Reset - сбросить "счётчик" (начать перечисление с начала) P.S Это очень поверхностоное объяснение, лучше найдите статью на эту тему

      @zerocode2909@zerocode29093 жыл бұрын
    • @@zerocode2909 Я знаю ответ на вопрос, коммент к тому, чтобы зрителю об этом донести

      @gaitavr1992@gaitavr19923 жыл бұрын
    • @@gaitavr1992 Еще можно было бы рассказать, как тоже самое на ассемблере написать, для полного понимания))

      @user-rm2gh2gc5f@user-rm2gh2gc5f3 жыл бұрын
    • @@user-rm2gh2gc5f Потом вот такие, как вы приходят на собеседования и не знают ничего о работе языка и движка. При чем тут ассемблер? Внутренности енумератора должен знать любой разработчик уровня мидл+. Вам лишь бы показывали как игру сделать за час да как пару скриптов накидать

      @gaitavr1992@gaitavr19923 жыл бұрын
    • @@gaitavr1992 Это совершенно разные уровни абстракции. У "таких как вы" сначала надо разобраться в енумераторе, а потом надо разобраться в компиляторе, Си подучить и ассемблер, потом научиться в хешредакторе программы писать, потом компьютеры собирать, а то так же непонятно, что корутина делает, пока не разбоерешся как электроны по проводам ходят. "Такие как вы", у вас вообще воспитание есть, что вы так обращаетесь к людям? "Таких как ВЫ" проводить собеседования вообще допускать нельзя. Какое, блять, ты вообще право имеешь меня с кем-то сравнивать, такиекаквыкать мне?

      @user-rm2gh2gc5f@user-rm2gh2gc5f3 жыл бұрын
  • Полезный материал, думаю многие наконец перестанут бояться корутин)

    @insaneone-7220@insaneone-72204 жыл бұрын
    • Два любимых русскоязычных геймдев блогера в одном месте, мимими

      @YasnaKo@YasnaKo2 жыл бұрын
    • Не думал тебя тут увидеть) Смотрю твои видео, спасибо что даёте такие ценные знания

      @mukagame5299@mukagame5299 Жыл бұрын
    • Ничего не понял, автор слишком быстро показывает и тараторит. Не понимаю, откуда столько хвалебных отзывов.

      @KotleKettle@KotleKettle Жыл бұрын
  • Вау, благодаря этому видео смог представить как можно улучшить игру, спасибо)

    @Vorono4ka@Vorono4ka4 жыл бұрын
  • Спасибо за видос! Когда начинал, никак не мог понять как всю логику запихнуть в апдейт, потом открыл корутины и жизнь стала проще

    @user-ip7pb6kt1h@user-ip7pb6kt1h4 жыл бұрын
  • Хоть я и повсеместно использовал корутины в своем коде, но я не знал, что с помощью них можно делать такие сложные последовательности анимаций! Спасибо за интересную инфу!

    @illoprin@illoprin4 жыл бұрын
  • Очень много полезной информации в одном коротком видео. Спасибо!

    @thisismaqsa4633@thisismaqsa46333 жыл бұрын
  • Спасибо за толковое и легкое донесение. Еще со временем когда только изучал Unity как-то корутины как "что-то нихрена непонятное и походу взрывоопасное" и использовал только в случаях крайней необходимости, теперь надо изучить их и попрактиковать! Спасибо!

    @t2g4_channel@t2g4_channel Жыл бұрын
  • Когда только начинал в юнити, сразу же потребовалось создать спавнер врагов, но к сожалению не смог быстро отыскать нужную (и ПОНЯТНУЮ) инфу по корутинам в Unity. Наткнулся на Invoke и собственно им и пользовался (и придумывал много костылей), а оказывается всё было так просто. Спасибо!

    @user-pz9iu8go6m@user-pz9iu8go6m4 жыл бұрын
  • Великолепная подача материала, большое спасибо!

    @cbubg@cbubg4 жыл бұрын
  • Четкий видос) Еще бы про Async Await-ы такой же)

    @mykytamarkianov4870@mykytamarkianov48704 жыл бұрын
  • Давно ждал этого урока. Пока никто не объяснил что они такое зачем нужны и т.д. Спасибо

    @akstis4183@akstis41834 жыл бұрын
  • Спасибо огромное. Благодаря Вам мой код сократится на множество строк.

    @user-qk6xb1rz4f@user-qk6xb1rz4f4 жыл бұрын
  • Спасибо, очень полезный материал. Так держать!Всё круто!

    @user-el2wb4ze3y@user-el2wb4ze3y4 жыл бұрын
  • Твои уроки как всегда великолепны!)

    @psy_gamer@psy_gamer4 жыл бұрын
  • Спасибо, то что нужно было в ролике, ты лучший!

    @festi7399@festi7399 Жыл бұрын
  • первый видео ролик где я понял меньше 30% материала, наверное куча инфы, автор постарался на славу

    @cheburek5116@cheburek51164 жыл бұрын
  • Спасибо огромное) Из ролика понял, что можно запускать асинхронные задачи из корутин, что расширяет их область применения, очень даже. По-больше бы таких роликов на русском ютубе, и жизнь стала бы легче.

    @ruslan_yefimov@ruslan_yefimov2 жыл бұрын
  • Отдельное спасибо за хорошие субтитры

    @user-jc5hl7jt5b@user-jc5hl7jt5b2 жыл бұрын
  • Отличный материал, спасибо

    @artem-astafyev@artem-astafyev2 жыл бұрын
  • Просто огонь! Пойду гляну что там еще на канале интересненького :D

    @sirj3714@sirj37143 жыл бұрын
  • Круто! Очень хорошо объяснил👍

    @skf-wm7ft@skf-wm7ft Жыл бұрын
  • Что я вынес с урока: - корутина позволит тебе задерживать пчелочку на месте, а потом сделать чтобы она упала - корутина сможет спаунить с пчелки монеты - корутина заканчивается на тина, а ещё там всякие yield return ы есть, которые помогают процессы на время задерживать (на время или до выполнения какого -то условия)

    @Salvadorioo@Salvadorioo5 күн бұрын
  • Спасибо.Очень познавательно!

    @MrDanko90@MrDanko904 жыл бұрын
  • Как всегда шикарно )

    @user-mi8rd2jd1m@user-mi8rd2jd1m4 жыл бұрын
  • очень здорово. долго искала такое видео

    @user-vb3py4jv7n@user-vb3py4jv7n3 жыл бұрын
  • Хорошее видео. Отличная идея сделать отдельный класс с простыми корутинами на движение и прочее.

    @IamTagir@IamTagir3 жыл бұрын
  • Очень крутые ролики у тебя)) Хотелось бы чтоб ты заснял курс для начинающих по unity, сам я андроид разработчик, но по твоим видео начинает симпатизировать и unity))

    @andrewdobosh2153@andrewdobosh21534 жыл бұрын
    • Спасибо) Если есть опыт разработки то думаю курс для начинающих не нужен, там в юнити все довольно интуитивно

      @EmeraldPowder@EmeraldPowder4 жыл бұрын
  • Спасибо, хороший туториал

    @hey2956@hey29564 жыл бұрын
  • Отличное видео, спасибо!

    @samserious5483@samserious54833 жыл бұрын
  • Отличный материал!!! С меня лайк+подписка

    @pavelyurchenkov8644@pavelyurchenkov86443 жыл бұрын
  • Отличное видео, спасибо

    @vano2vano@vano2vano4 жыл бұрын
  • Боже как же годно! Господа это лайк

    @dmitriygray6616@dmitriygray66164 жыл бұрын
  • Оч классный ролик все понятно и интересно:3

    @mrmelog4320@mrmelog43202 жыл бұрын
  • Шикарно. Лучшее объяснение из всех виданных как на русском, так и на английском ( :) скорость на пределе восприятия, информация очень плотно временами хочется поставить WaitForSecond (1.f);

    @denisgoodman4492@denisgoodman44923 жыл бұрын
  • Было бы хорошо еще посмотреть урок про много поточность в unity. А про корутины спасибо

    @zarplatatv4556@zarplatatv45564 жыл бұрын
    • Ultra-Money, ну, это обычную многопоточность в с# тогда надо смотреть (скорей всего). Таски и await async

      @ivanm71@ivanm713 жыл бұрын
    • Насколько я знаю, Unity не поддерживает многопоточность, и при попытке запустить ещё один поток выбрасывает исключение.

      @lulook2806@lulook28063 жыл бұрын
    • @@lulook2806 поддерживает.

      @ivanm71@ivanm713 жыл бұрын
    • @@ivanm71 async/await - механизм асинхронности и к многопоточности не имеет никакого отношения

      @hanmayujiro1433@hanmayujiro14333 жыл бұрын
    • @@hanmayujiro1433 я тред в юнити прекрасно создавал для сокетов

      @ivanm71@ivanm713 жыл бұрын
  • Оч годный контент, спасибо тебе огромное! Есть в планах выпустить что-нибудь про свет в 3д?)

    @artUSUN@artUSUN4 жыл бұрын
  • Полезно, спасибо

    @ivanm71@ivanm713 жыл бұрын
  • Какие есть способы приостановки выполнения корутины с последующим возобновлением? К примеру при появлении всплывающее подсказки на экране, объекты движущихся /анимированые с использованием корутин замерли

    @knightsofthenight4459@knightsofthenight44594 жыл бұрын
  • 12:30 Вот только корутину нельзя остановить с помощью StopCoroutine если она запустилась прямой ссылкой.

    @unnamer345@unnamer3453 жыл бұрын
  • Помню как то делал корутину содержащую таймер который должен был сбрасываться в 0 в случае если объект покидал триггер. Но он не сбрасывался. В итоге открыл для себя async await. Все возможности корутин есть и даже больше, синтаксис почти тот же + вроде, нет этих проблем с отключением компонента и продолжением выполнения процесса.

    @seldemirov@seldemirov4 жыл бұрын
  • Покажи пожалуйста как реализовать FSM на unity.

    @brickman3171@brickman31714 жыл бұрын
  • Если дело касается анимаций, уж тем более вещей, типа "сделать ui прозрачным со временем", лучше использовать DoTween. Корутины использую только если очень нужно выполнить методы по цепочке, с задержками, и эти методы не связаны с монобехейвером. Во всех остальных случаях - только DoTween, даже твой простой пример из видео занял строчек 15, через твины это делается одной. Я не плохой человек, мне нравятся твои видео, но зачем писать хорошие анимации не одной строчкой?)

    @user-tu1nl4ht3t@user-tu1nl4ht3t4 жыл бұрын
    • Это скорее просто как пример, лёгкий для понимания.

      @homexp13@homexp134 жыл бұрын
    • @@homexp13 До меня только что дошло, что видео "про корутины", значит видео ок, а мой комментарий ни к селу ни к городу)

      @user-tu1nl4ht3t@user-tu1nl4ht3t4 жыл бұрын
  • удивило что ты сказал что корутины не так популярны среди новичков ) Мне казалось это основа основ)

    @just4funTony@just4funTony4 жыл бұрын
  • В чём преимущество использования корутины для MoveForward, например, по сравнению с размещением его в Апдейте?

    @MaruskaStarshaya@MaruskaStarshaya2 жыл бұрын
  • Я прям рессмеялся когда узнал что можно вот так просто взять и вставить одну(!) строчку между двумя, и обойтись обычной корутиной, вместо того чтобы писать огромную функцию таймер с кучей архитектурных сложностей 😂😂😂

    @user-sq4ff4zp9b@user-sq4ff4zp9b10 ай бұрын
  • Стоило рассказать ещё про составление очередей корутин, вызов корутин по имени, передача параметров в корутины, хотя видео правда хорошее.

    @cyanmargh@cyanmargh4 жыл бұрын
  • Ray marching в HDRP/URP! И кроме этого слелай просто видео про ray marching. Думаю будет круто.

    @user-wv8vz6kt7z@user-wv8vz6kt7z4 жыл бұрын
  • thank you for video

    @rinatyagafarov5328@rinatyagafarov53283 жыл бұрын
  • Ещё можно рассказать про параллельно-последовательное выполнение корутин

    @ve1c0m@ve1c0m3 жыл бұрын
  • А как сделать чтобы корутины не накладывались, допустим есть несколько обьектов при нажатии на которой он передвигается с помощью корутины с точки А в точку Б, у меня получается что пока он передвигается (допустим задал 5 секунд), я могу нажать на другой обьект и он тоже начнет свое движение. А мне нужно чтобы пока первый обьект не дошел до точки Б, другие обьекты не могли двигатся. Пробовал с переменной bool играя с true и false, что то не работает.

    @777nayman@777nayman2 жыл бұрын
  • Скажите в чем разница между WaitForSeconds и Invoke ??

    @gamemoments8183@gamemoments81833 жыл бұрын
  • Привет, как насчёт видео обзора по probuilder unity.

    @region34cg@region34cg3 жыл бұрын
  • Братан, не плохо объяснил, но ошибка многих. Корутина регистрируется как ты и сказал в главном потоке Unity, но даже после остановки ее по мере выполнения кода или ручной остановки, ещё живёт в самом потоке, по этому с корутинами нужно быть осторожным. Они на первый взгляд не тяжёлые, но они очень даже дорогие и хоть этого часто не видно, но корутина сама по себе чуть замедляет выполнение кода, ну как я и сказал, она не дешёвая

    @chizhikovdanilgamedev@chizhikovdanilgamedev4 жыл бұрын
    • MBSCore ну это потому что все данные в корутине живут пока она не завершится, в след. кадре.

      @lawsonllka271@lawsonllka2714 жыл бұрын
    • чел, ты можешь запустить 10 000 корутин и ничего не упадёт. А можешь одним циклом while в Апдейте полностью скрашить приложение - теперь еще раз подумай насколько они "тяжёлые")

      @MaruskaStarshaya@MaruskaStarshaya2 жыл бұрын
  • Вот это класс. Кучу пробелов устранил, благодаря этому видео. Запиши, плиз, в таком же обзорном стиле видео по веб запросам, ради христа. Чтоб вначале вкратце о WWW (на них куча старого кода, уроков, плагинов и тд) и потом о UnityWebRequest'ах. В идеале с парочкой примеров, как заменять в устаревшем коде www на UnityWebRequest. По этой теме на русском инфы почти никакой.

    @toxicknight3079@toxicknight30794 жыл бұрын
  • Приветствую друзья, может кто подскажет можно ли в рамках одного скрипта запустить респаун двух объектов, в разных точках и с разной задержкой респауна? если можно то как?

    @taode2623@taode26233 жыл бұрын
  • Очень полезное видео! Скажи пожалуйста, обязательно ли прерывать корутину после её выполнения с помощью break, или она прерывается сама после любого yield return?

    @blvcknwh1te@blvcknwh1te4 жыл бұрын
    • Если не вызывать ее в Update, то она выполнится один раз до конца, брейком можно завершить заранее

      @trushkeen@trushkeen4 жыл бұрын
    • @@trushkeen понял, спасибо

      @blvcknwh1te@blvcknwh1te4 жыл бұрын
  • Спасибо, за видео, но у меня вопрос. Можно ли записать в куратину вот это - Int a = 1, b = 1; a + b; ?

    @Dziepso@Dziepso3 жыл бұрын
    • Спасибо что смотрите :) Да, всё что можно запихать в обычную функцию будет точно так же выполняться и в корутине

      @EmeraldPowder@EmeraldPowder3 жыл бұрын
  • 6:29 - можно, плиз, ссылку на картинку?

    @hanmayujiro1433@hanmayujiro14334 жыл бұрын
    • @@hanmayujiro1433 не за что, обращайся)

      @vplotnikov@vplotnikov3 жыл бұрын
  • Ожидание до нового фрейма помогло разбить генерацию чанков на мелкие задачи и пофиксить просадки фпс при подгрузке чанков (когда все выполнялось за 1 фрейм).

    @arsenbabaev1022@arsenbabaev10223 жыл бұрын
  • Было бы полезно рассказать как использовать yield конструкцию для создания своих корутин, т.е. без MonoBehaviour. Как используется такая конструкция в C# например для обхода массива, или хотя бы как именно вызываются корутины в MonoBehaviour

    @bogotoff@bogotoff4 жыл бұрын
    • Timur Bogotov зачем?! Это уже лишнее и касается уже программирования в целом, а не юнити.

      @lawsonllka271@lawsonllka2714 жыл бұрын
    • Да, это тема широкая, в этом видео я решил не углубляться как в целом работают IEnumerator'ы и yield'ы. Но если про работу с коллекциями рассказывать то это уже скорее к С# чем к Unity относится, так что не в это видео

      @EmeraldPowder@EmeraldPowder4 жыл бұрын
    • @@EmeraldPowder Да, всё верно. Наверное большинству это и не нужно

      @bogotoff@bogotoff4 жыл бұрын
  • Отличный видос! А что за редактор кода используется? Уж очень приглянулся

    @MatuSS39@MatuSS394 жыл бұрын
    • Rider

      @okely4755@okely47554 жыл бұрын
    • JetBrains Rider называется, если вдруг кому тоже стало интересно

      @MatuSS39@MatuSS394 жыл бұрын
    • @@okely4755 спасибо

      @MatuSS39@MatuSS394 жыл бұрын
  • Было бы классно объяснить о корутине после коллизии

    @user-qh8uw7lf8n@user-qh8uw7lf8n3 жыл бұрын
  • Я правильно понимаю, что это почти тоже самое, что генераторы или async/await в javascript? А то я про эти корутины слышал только из Kotlin

    @sasha-clown@sasha-clown3 жыл бұрын
    • Да, в C# тоже есть async/await, и их даже можно использовать в Unity почти точно так же как и корутины. Но я привык к корутинам, они более традиционные в юнити, так что их в основном использую

      @EmeraldPowder@EmeraldPowder3 жыл бұрын
  • Корутины и асинхронные методы разные вещи?

    @vladyan01@vladyan01 Жыл бұрын
  • Короютины лучшее что можно придумать. Я с их помощью полностью логику с босса сделал

    @drseedon@drseedon4 жыл бұрын
    • Dr Seedon корутины ))

      @lawsonllka271@lawsonllka2714 жыл бұрын
  • Привет! Я новичок, подскажите как сделать задержку после нажатия кнопки на экране (прыжок в данном случае) прежде чем смогу нажать ее повторно. Хочу попробовать таким методом убрать многократные прыжки (я знаю что есть и другие способы убрать многочисленный прыжок, но интересно можно ли этим способом так делать).

    @tarytale1582@tarytale1582 Жыл бұрын
    • вы про Input GetButton ? надо что бы в каждом кадре не повторялось использовать или down или up , что бы еще меньше на моторику пальцев влияло (если не бить по клавише) лучше Up , те действие будет выполнено не только когда кнопка нажата но и отжата

      @BastionKadabr@BastionKadabr Жыл бұрын
  • а у меня почему-то StopCoroutine(corName()) - не работает. попробовал создать экземпляр, с трудом корутина запустилась, но все равно метод остановки не работает, спасает только стополлкорутинс :"(

    @AmbassadorOfLogic@AmbassadorOfLogic2 жыл бұрын
  • А можно теперь про многопоточность? :)

    @cgytrus@cgytrus4 жыл бұрын
  • 9:05 ну... не сказал бы... иногда вместо ифов проверки более полезна или для убирания сообщения ошибки, если она не критична для тестирования, но мешает отслеживать что-то реально критичное ввиду спама в лог

    @Tmerus@Tmerus3 жыл бұрын
  • Объясни пожалуйста, что такое корутина "под капотом" как они связаны между собой и почему остановка корутины осуществляется, в том числе, через "break".

    @user-pr9xd3nd2q@user-pr9xd3nd2q3 жыл бұрын
    • Это тоже тема интересная, но уже скорее не про юнити а про C#, да и тянет на отдельное видео

      @EmeraldPowder@EmeraldPowder3 жыл бұрын
    • @@EmeraldPowder был бы рад такому видео, так как впервые на детальное объяснение напоролся лишь спустя 2 года коммерческой разработки)

      @user-pr9xd3nd2q@user-pr9xd3nd2q3 жыл бұрын
  • а как передовать корутины между скриптами ?

    @prosto_chel544@prosto_chel544 Жыл бұрын
  • Пожалуйста делай урок по Art Engine

    @kamal.x@kamal.x4 жыл бұрын
  • Ты мой бог,спасибо

    @saurkfamily4465@saurkfamily44654 жыл бұрын
  • Как раз тут вчера делал прыжок через корутины)) по заданию от препода, сделать там всякое без использования Update() Хз че людям они не нравятся :D очень гибкий инструмент...

    @Lucio11a@Lucio11a Жыл бұрын
  • Получается корутины работают асинхронно?

    @ilyanaumov4251@ilyanaumov42513 жыл бұрын
  • Давай про многопоточность

    @user-in9jv9rt4o@user-in9jv9rt4o4 жыл бұрын
  • Случайно увидел это видео, в общем для новичков полезно. Но далеко не ВСЁ о корутинах!!! Автор, зря вы про то что try/catch ВЕСЬ ГЕЙМДЕВ не использует, это далеко не так. Про try/catch в корутинах важно было сказать что нельзя делать так: private IEnumerator MyCoroutine() { try { yield return null;

    @user-zr5dx4kg3x@user-zr5dx4kg3x3 жыл бұрын
  • А корутина работает в фоновом режиме, или код после корутины будет работать только, когда корутина закончится?

    @dertfin1@dertfin14 ай бұрын
    • Если ещё актуально, в фоновом режиме

      @Some_kind_of_something@Some_kind_of_somethingКүн бұрын
  • надоже, я думал я один ридером пользуюсь )

    @lkghost7@lkghost73 жыл бұрын
  • у кого проблемы с таймерами и остановкой корутины до начального состояния , посмотрел на англ , самый простой способ создать переменную IEnumerator типа там MyTempCorut и условие if (MyTempCorut != null) { StopCoroutine(MyTempCorut ) } MyTempCorut = типа там MyOriginalCorout(если что то есть); StartCoroutine(MyTempCorut );

    @BastionKadabr@BastionKadabr2 жыл бұрын
  • Так в чем преимущество этого метода, я не понял, если честно. К примеру, я могу написать всю логику в методе Update с счетчиком времени и всё. Почему такую логику(со счетчиками) стоит выносить именно в корутины? просто для удобства и чтобы не заводить переменные для таймеров?

    @Grim_J0nes@Grim_J0nes3 жыл бұрын
    • Иногда Update лучше подходит, но когда нужно сделать 5-10 непохожих действий с интервалом в пол секунды - то придётся делать либо 10 переменных таймеров, их инициализировать и следить за порядком. Либо делать enum с 10 значениями, большой switch, и один таймер. Но вообще технически всё что можно сделать корутинами - можно и через обычный апдейт

      @EmeraldPowder@EmeraldPowder3 жыл бұрын
    • @@EmeraldPowder Понял, спасибо за ответ

      @Grim_J0nes@Grim_J0nes3 жыл бұрын
  • А я тут использовал их для зацикливания или нажатия с паузой при нажатии кнопки UI

    @wowka7063@wowka70632 жыл бұрын
  • Круто! Бублик, Ананас и баранка с финиками.

    @finerace@finerace4 жыл бұрын
  • что делать? выдаёт ошибку - Assets\Scenes\scripts\courutine.cs(19,61): error CS0117: 'Quaternion' does not contain a definition for 'indentity' (я совсем новичок в этом)

    @etoya413@etoya4133 жыл бұрын
    • Правильно Quaternion.identity, советую пользоваться автодополнением в студии, тогда все эти названия не надо запоминать

      @EmeraldPowder@EmeraldPowder3 жыл бұрын
    • @@EmeraldPowder спасибо, очень долго не мог понять что не то

      @etoya413@etoya4133 жыл бұрын
  • Когда выключаешь скрипт на объекте (смена enabled) ты выключаешь только Update(), а остальные методы функционируют

    @davidkalinovsky1216@davidkalinovsky12164 жыл бұрын
    • Не только, но в целом именно так. Галка не отключает компонент, она всего лишь отключает несколько событий MonoBehaviour - docs.unity3d.com/ru/530/ScriptReference/MonoBehaviour.html.

      @antonybe2968@antonybe29684 жыл бұрын
  • Го урок по кулдауну

    @greemdim4611@greemdim46113 жыл бұрын
  • Зачем они нужны когда есть DOTween? (не считая асинхронных загрузок или примитивных веб-запросов)

    @kawaikami@kawaikami4 жыл бұрын
    • а что в DOTWeen есть?

      @tarasklymenko5211@tarasklymenko52114 жыл бұрын
  • А как остановить корутину я так и не понял. Мне надо, чтобв она повторялась только секунд 10

    @apache_16@apache_162 жыл бұрын
  • КАКАЯ ЕЩЁ НАХЕР КОРУТИНА, КОРОУТАЙН ТАМ НАПИСАНО.

    @Putin-Lox@Putin-Lox2 жыл бұрын
  • корутины: существуют люди: Thread.Sleep(TimeSpan.FromSeconds(5));

    @themaither1383@themaither13833 жыл бұрын
  • Часто использую вместо анимации, чтобы не добавлять аниматор везде где придется.

    @Dippps@Dippps3 жыл бұрын
  • Основа корутинов - средство генерации анонимных итераторов в C# при помощи инструкции yield. Можно легко написать собственную реализацию корутинов при помощи этого языкового средства. Грустно, что подобный механизм не добавляют в Java - это ведь сильно расширяет возможности языка.

    @lulook2806@lulook28063 жыл бұрын
    • Да, yield это вещь мощная. Думал даже сделать видос про реализацию своих корутин, чтобы объяснить как они работают, но решил что это уже слишком будет) В Java вообще ребята консервативные, не пойму как они без перегрузки операторов живут столько

      @EmeraldPowder@EmeraldPowder3 жыл бұрын
    • @@EmeraldPowder добавить бы в Java перегрузку операторов и неуправляемые типы - был бы шикарный язык. Мне очень нравится, как в нём реализован механизм делегатов. Он универсальнее. От делегатов C# пахнет указателями на функции C++. В целом, в Java вполне можно реализовать что-то похожее на yield инструкции, только конструкция эта будет выглядеть не так элегантно, как в C#.

      @lulook2806@lulook28063 жыл бұрын
  • Все бы хорошо, но код плохо читается на темной теме.

    @DanDiablo@DanDiablo2 жыл бұрын
  • Спасибо автору ! Вреде перспективней использовать Async - kzhead.info/sun/asmEmZqGgqSfaYE/bejne.html

    @anatoliy9696@anatoliy96964 жыл бұрын
  • Ещё одна "фича" корутин в том что они классы и yield return new создаёт множество объектов которые сборщик мусора потом должен собрать. Поэтому желательно особенно в циклах сначала создавать один илд инструкцию и каждый раз возвращать один и тот же экземпляр инструкции.

    @nooftube2541@nooftube25413 жыл бұрын
    • Да, это их минус. Некоторые пытаются делать игры вообще без аллокаций, чтобы gc не влезал, тогда не подходят корутины. А так, если видишь в профайлере что сборщик много занимает, придётся постараться повыносить эти инструкции в локальные переменные, или заменить основные на yield return null, он вроде ничего не создаёт

      @EmeraldPowder@EmeraldPowder3 жыл бұрын
    • @@EmeraldPowder я имею ввиду что если цикл и всегда фиксированный вейт, то написать сначала создание корутины и потом йелд одной и той же, не слишком сложно. Хотя конечно это уже оптимизация. Жаль, что только не упоминул в видео :)

      @nooftube2541@nooftube25413 жыл бұрын
  • Новичкам будет полезно. Но мне кажется, все равно очень сложно объяснено. Вызову IEnumerator при помощи StartCoroutine уделено пару секунд.

    @--.--@--.--4 жыл бұрын
  • Как насчет сделать урок по инвентарю в играх?

    @webStandard1151@webStandard11514 жыл бұрын
  • Писать машину состояний - велосипед, т.к yield компилятором преобразуется в готовую машину состояний.

    @Tezla0@Tezla04 жыл бұрын
    • Верно, вот примерно такую же машину с enum'ом и переключением состояний друг за другом иногда встречаю в чужом уже, вместо корутин. Я когда-то смотрел через ilspy во что преобразовываются методы с yield, чтобы разобраться в этом. Но в этот видос никак не получилось впихнуть про это все)

      @EmeraldPowder@EmeraldPowder4 жыл бұрын
KZhead