Четыре вида задержек в Unity - ч.1 Invoke, Coroutine

Поділитися
Вставка
  • Опубліковано 26 лис 2024

КОМЕНТАРІ • 49

  • @shardjovanna6701
    @shardjovanna6701 5 місяців тому

    Спасибо вам огромное, пусть и не с первого раза, но благодаря вам я разобрался как работать с задержкой или карутиной, добра вам!

  • @sagrgywejhxcvx
    @sagrgywejhxcvx Рік тому

    нигде до этого про инвоук не слышал, спасибо!

  • @alex.artechtattoo
    @alex.artechtattoo 2 роки тому +2

    Повторение - мать учения! Классный контент! Вчера наткнулся на канал и не подписаться не смог. Премного благодарен за труд!

    • @unityk555
      @unityk555  2 роки тому +1

      Спасибо за подписку. Рад что контент вам понравился, впереди еще много интересного.

  • @ПавелЮ-р5э
    @ПавелЮ-р5э 2 роки тому +3

    Всё по делу , лучшее обьяснение корутин , молодец )

    • @unityk555
      @unityk555  2 роки тому

      Спасибо, стараюсь)

  • @masikano8976
    @masikano8976 5 місяців тому

    Копеес, сколько читал про корутины, когда сталкивался с необходимостью задержки, так и не мог до конца понять, как это делается. Спасибо)
    P.S. возможно кто то запустил корутину для моего развития :)

  • @_T-800_
    @_T-800_ 2 роки тому

    Автор видоса красавчик, лаконично, грамотно без спама 👍👍👍👍👍👍ЛАЙК🥇🏆♥

  • @evgenbaranenko2582
    @evgenbaranenko2582 Рік тому +1

    Спасибо вам большое за ваши уроки!!

  • @tigranavagyan1587
    @tigranavagyan1587 Рік тому

    Большое, человеческое спасибо!!!

  • @Tera-h7e
    @Tera-h7e 2 дні тому

    Корутины выполняются не параллельно, а асинхронно, важно не путать. Другими словами, когда вы вызываете корутину, она передается в главнй поток юнити и там обрабатывается. То есть, когда вы доходите до yield инструкции, мы говорим Юнити, что продолжи свою работу, пока планировщик не продолжит выполнять код в этом методе

  • @tigranavagyan5922
    @tigranavagyan5922 Рік тому

    Спасибо за видео!!!

  • @yogoman4810
    @yogoman4810 Рік тому +1

    Эх досмотрел до второ минуты. Для моей задачи инвока хватило😂

  • @elsee8865
    @elsee8865 2 роки тому +5

    Спасибо за видео!
    Я бы ещё добавил, что лучше использовать name of() вместо стрингового названия метода:)

    • @andrey_aka_skif
      @andrey_aka_skif 2 роки тому

      Либо использовать корутины вместо инвок

    • @unityk555
      @unityk555  2 роки тому

      Да вы правы, если есть возможность захешировать стрингу, то лучше ее хешировать.

    • @unityk555
      @unityk555  2 роки тому

      @@andrey_aka_skif видео не про то что лучше, а про разные способы задержек. Я просто показываю какие виды бывают и Invoke тоже имеет место быть.

    • @andrey_aka_skif
      @andrey_aka_skif 2 роки тому +1

      @@unityk555 комментарий не про то, что корутины лучше инвоков. Комментарий про то, что в корутинах есть перегрузка, которая позволяет непосредственно сослаться на вызываемый метод (вместо обращения по имени). И если это критично, то корутина, имхо, предпочтительней.

    • @unityk555
      @unityk555  2 роки тому

      Тогда да) я лично уже давно не использую ни инвоки и не карутины, програмирую используя асинхронные методы и uniRx задержки, о них речь пойдет во втором уроке в среду.

  • @igorgavriloff3350
    @igorgavriloff3350 10 місяців тому

    Второй день бошку ломаю, почему не могу остановить корутину. Оказалось надо в переменную её поместить, спасибо большое!!

    • @unityk555
      @unityk555  10 місяців тому

      Да не за что, остановка корутины штука не очевидная. Сам в свое время сидел с ней.

    • @Fufik2000
      @Fufik2000 6 місяців тому

      А зачем вообще останавливать то? Она взяла, выполнила свой код и всё, закончилась, нет? Разве не так?

  • @sergeiponomarev8316
    @sergeiponomarev8316 Рік тому

    спасибо за видео!

  • @elsee8865
    @elsee8865 2 роки тому +3

    Я ещё вспомнил про thread. Sleep(). Загуглил "будет ли это останавливать всю игру/приложение"? Оказалось да, лучше этим не пользоваться. Так как юнити билд работает в одном потоке. Если вы конечно не создаёт е свои потоки.

    • @andrey_aka_skif
      @andrey_aka_skif 2 роки тому

      Под предыдущим видео писал комментарий схожего содержания. Немного поэкспериментировал и сделал отсрочку с помощью класса System.Timers.Timer. В нем событие срабатывания вызывается в отдельном потоке. А я пытался удалить объект со сцены. Из простого - объект не удалился. Из внезапного - таймер продолжил срабатывать даже после остановки игры. Ну, нажал стоп, перешёл в редактор, а метод всё вызывается и вызывается. И как его остановить, хз )))

    • @unityk555
      @unityk555  2 роки тому

      Метод о котором вы написали это уже многопоточность, я намеренно не касаюсь этой темы в этом ролике. Это уже не просто задержки, а манипуляции потоками. Но во второй части урока будет асинхронность, например.

    • @unityk555
      @unityk555  2 роки тому

      @@andrey_aka_skif интересно)))

  • @timurmingulov9921
    @timurmingulov9921 2 роки тому

    Отличное видео, правда, первая и самая простая задержка - это наверное реализация таймера.
    Ну типа заводим переменную, в апдейте плюсуем Time.deltaTime. Также имеем список ордеров, кт можно добавлять таймеру через интерфейс.
    В ордере Action и время через которое он должен быть запущен. Через каждый Update таймер обновляет себя и смотрит истекшие ордеры. Если какой-то ордер истёк, закрываем его, убираем из списка и вызываем action.Invoke.
    Вот тебе пятый способ сделать задержку =)

    • @unityk555
      @unityk555  2 роки тому +1

      Ну способ с таймером не всегда удобен, зачем делать свой таймер если его можно запустить с Invoke сразу? Но иногда я использую и описанный выше подход. А вообще способов сделать задержку хватает, начиная с простого Invoke и заканчивая многопоточностью, так что берите те что вам по душе))

    • @timurmingulov9921
      @timurmingulov9921 2 роки тому

      ​@@unityk555 Да он вообще не удобен, просто в некоторых системах иного способа из коробки нет. Например, если попытаться совокупить Unity и Arduino.
      Кстати, тема авейт-асисек не раскрыта. Предлагаю взять какую-нибудь задачку, кт гарантировано положит поток, например, поиск простых чисел в диапазоне и показать, как её решить, не вешая Unity Thread.
      Так же, думаю, будет интересно как возвращать пакеты из UDP-сокета в основной поток.

    • @unityk555
      @unityk555  2 роки тому

      Ну по async/await позже сниму отдельный урок. По всяконо рода потокам тоже можно будет записать. Сейча уже план сформирован. Осталось только найти свободное время для записи))

  • @Pravda-bw3tj
    @Pravda-bw3tj 2 роки тому +7

    5 задержка - это задержка в развитии, ведь большинство пишущих людей на юнити с ней сталкиваются!

    • @adzhevzhik
      @adzhevzhik Рік тому

      6 задержка - это задержка в развитии, ведь большинство людей на росии с ней сталкиваются

    • @Pravda-bw3tj
      @Pravda-bw3tj Рік тому

      @@adzhevzhik хохол момент)

  • @TOSHIKGAME
    @TOSHIKGAME Рік тому

    Как получается IEnumerator сделать private если это общедоступный метод,даже редактор подсвечивает "не допустимо для использования",а куда ни глянь,у них у всех private?

    • @naredsh6675
      @naredsh6675 Рік тому

      IEnumerator это не метод в данном случае. Это тип возращаемого значения.

  • @darkscorp4415
    @darkscorp4415 3 місяці тому

    Пятая это задержка в развитии, если долго пытаться разобраться в коде новичку.

    • @unityk555
      @unityk555  3 місяці тому

      @@darkscorp4415 )) все с опытом

  • @ДобрыйЧел-г4у
    @ДобрыйЧел-г4у 2 роки тому

    E осень помогло для ии

  • @valeryrubantsev7837
    @valeryrubantsev7837 Рік тому +1

    Больше всего корутины в морковке.

  • @SMOKI-ex5uu
    @SMOKI-ex5uu Рік тому

    Timer

  • @Progerman342
    @Progerman342 Рік тому

    Спасибо Ато разобраться немогу

  • @sleepingfoxstudio1301
    @sleepingfoxstudio1301 2 роки тому

    Настолько знаю - Invoke юзать это плохой практикой считается

    • @unityk555
      @unityk555  2 роки тому

      Тоже где-то это слышал, но не углублялся, так как никогда его не использовал))

    • @sleepingfoxstudio1301
      @sleepingfoxstudio1301 2 роки тому

      @@unityk555 Invoke создает неотслеживаемую связь и часто рушит архитектуру