Паттерн наблюдатель в unity3D

Поделиться
HTML-код
  • Опубликовано: 23 авг 2024

Комментарии • 104

  • @user-ef4yx3mu2q
    @user-ef4yx3mu2q Год назад +2

    Конечно инетерсно это видео. У тебя самый прикольный канал среди русскоязычных юнити девелоперов. Жаль только видео давно не выходят.

  • @seldemirov
    @seldemirov 3 года назад +6

    Ваш канал просто находкаю. За тему паттернов отдельное спасибо!
    Не знаю думали вы об этом или нет, но было бы здорово иметь под каждым видио сылку на репотозиторий с материалами урока.

    • @gaitavr1992
      @gaitavr1992  3 года назад +3

      Спасибо, у меня почти под каждым видео репозиторий. Исключение теоретические видосы)

    • @seldemirov
      @seldemirov 3 года назад

      @@gaitavr1992 Ну тогда вообще все идеально! ) Еще раз спасибо за канал и работу!

  • @NoldoWalker
    @NoldoWalker 3 года назад +9

    Спасибо за такую информацию, в связке (юнити + паттерны) я такого не находил. Очень полезно.

    • @gaitavr1992
      @gaitavr1992  3 года назад +8

      Приятно удивлен, что тема вызывает интерес у разработчиков

    • @sigvist6228
      @sigvist6228 3 года назад +2

      @@gaitavr1992 да просто хочется научиться писать красивый код, который можно будет в будущем поддерживать)

  • @delalen8012
    @delalen8012 3 года назад +5

    Заебись!)
    Продолжай)

  • @user-vz6tq8bl9k
    @user-vz6tq8bl9k 3 года назад +33

    Шикарные видосы! Но слишком плотно наваливаешь) можешь делать на один уровень подробнее?

    • @gaitavr1992
      @gaitavr1992  3 года назад +2

      Сложно соблюсти баланс между длиной видео и понятностью материала. Если есть вопросы - спрашивай

    • @Nightmareinfos
      @Nightmareinfos 2 года назад +4

      @@gaitavr1992 дело в том, что несмотря на то, что видео короткое, я трачу на него раз в 5 больше времени, т.к. приходится останавливать и самому вникать в написанный код. Зачастую десятиминутное видео изучается около часа.

    • @gaitavr1992
      @gaitavr1992  2 года назад

      А кто-то справляется за раз, ему ускорять видео или мотать нужно в таком случае?

    • @Nightmareinfos
      @Nightmareinfos 2 года назад +9

      @@gaitavr1992 ну зачастую вы показываете сразу 3 класса на одном экране, которые наследуют друг-друга и при этом объясняете как оно все работает. Я думаю, мало кто сможет сразу прочитать весь код и вникнуть в суть за такое короткое время. Возможно, некоторые просто вообще не вникают в код, а просто слушают как оно на словах работает, тогда им нормально.

    • @ruslan_yefimov
      @ruslan_yefimov 2 года назад +2

      @@Nightmareinfos Это ведь канал о unity, а не изучении Шарпа) Непонятно - ставишь на паузу и разбираешься. Весь код же на экране

  • @nezdanchickkun
    @nezdanchickkun Год назад +2

    Вот бы угадать требования по аналитике

  • @olexkov4643
    @olexkov4643 4 месяца назад

    Делал что то подобное...как по мне очень удобно.

  • @vladfinni6797
    @vladfinni6797 2 года назад +4

    Очень хотелось бы больше материалов по ECS ( От Entitas или Юнитишный) как никак, но юнитеки видят в этом будущее, да и у компаний спрос растет.

  • @ericetto1089
    @ericetto1089 3 года назад +2

    Использую UniRx и Zenject, хочу еще наконец-то разобраться в UniTask

  • @neverworld8815
    @neverworld8815 3 года назад +1

    Касательно вопроса из видео, мне посоветовали всегда использовать паттерны, их по сути не нужно писать совсем с нуля, но они могут быть лучше чем стандартные методы Unity

  • @cheerkin
    @cheerkin 3 года назад +1

    Лайк за делегат комбайн! Я думаю, 99% юнити-разработчиков и слов-то таких не знают)

  • @yagdra
    @yagdra 3 года назад

    UniRx наше всё! Очень интересна тема жонглирования потоками в UniRx

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Там нет потоков

    • @yagdra
      @yagdra 3 года назад

      @@gaitavr1992 Ага, я понимаю, не так выразился - подписками.

  • @sigvist6228
    @sigvist6228 3 года назад +1

    Спасибо за то, что ты есть. Ты делаешь очень хороший и качественный контент для программистов!)

  • @ncinsli
    @ncinsli Год назад +1

    Пытался в UniRX, не очень получилось. Хотелось бы видео о нем)

  • @lesha2529
    @lesha2529 3 года назад

    Чотко, мне понравилось)

  • @harmfulCat
    @harmfulCat 2 года назад +2

    Отличное видео. Но надо посидеть, разобраться в каждом скрине и начинает доходить.
    Хотя в начале заходишь, думаешь такой: "О Обсервер за 6 мин, огонь, ща"
    Но в реальности зависаешь на паузе на часик другой.

  • @user-jv4qo5zf7l
    @user-jv4qo5zf7l 3 года назад +2

    Очень хотелось бы услышать видео о UniRx, желательно в связке с Zenject

    • @gaitavr1992
      @gaitavr1992  3 года назад +3

      Да, до этих тулзов я тоже доберусь, там одним видео не отделаться

  • @ericetto1089
    @ericetto1089 3 года назад +4

    Наконец-то видео по паттернам в Unity, Хоспаде, храни Максима

  • @ve1c0m
    @ve1c0m 3 года назад +2

    Хотелось бы про связку UniRx, UniTask и Zenject послушать

    • @gaitavr1992
      @gaitavr1992  3 года назад +1

      Unitask это часть UniRX, а Zenject это совсем другая история. Недавно на канале вышел ролик про async await чисто C#, это даст понимание примерное об UniRX, а Zenject я через несколько месяцев прикручу к tower defense

  • @nikita8291
    @nikita8291 3 года назад +1

    Спасибо за видос!) Макс, на 2:07 ты вызываешь деструктор, получается сборщик мусора добавит этот объект в очередь на удаление и выполнит отписку? Просто не понятно с активными ссылками, вроде же GC такие объекты игнорит

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Это я протупил и оставил, оно не нужно

  • @user-we6si4mi3x
    @user-we6si4mi3x 2 года назад

    комментарий в поддержку )

  • @Niko_Zen
    @Niko_Zen 3 года назад +1

    Спасибо !!! коротко и информативно

  • @user-ni5sw4tj8e
    @user-ni5sw4tj8e 3 года назад +1

    Полезно! Спасибо!❤️

  • @sweeepeeeeng
    @sweeepeeeeng 2 года назад +1

    А есть ли смысл в дтошке использовать свойство с публичным get и set?

  • @Timoteeeei
    @Timoteeeei 3 года назад +1

    Полезно! Спасибо за инфу!

  • @romansharpe1131
    @romansharpe1131 2 года назад

    Максим, а расскажи про классы с окончанием Provider. В этом видео они упоминаются часто. Это паттерн какой то или ты просто от себя так именуешь?

    • @gaitavr1992
      @gaitavr1992  2 года назад

      Это не паттерн, просто суффикс, который очерчивает суть класса

  • @RoGa766
    @RoGa766 2 года назад +1

    Добрый день, вопрос как быть с очередностью подписок на каком-то ивенте?
    Пример: персонаж получает урон, подписано 2 ивента 1 хочет убрать 10 от входного урона, а второй 20%.
    Из бизнес требований ясно, что сначала должны вычитаться проценты, а только потом целые части.
    Как решаются такие проблемы?
    Заранее спасибо

    • @gaitavr1992
      @gaitavr1992  2 года назад

      Добрый. Порядок подписки определяет порядок обработки, но это ненадёжно. Нужен посредник, который обработает урон и нанесет результат

  • @AleksYurchenko
    @AleksYurchenko Год назад

    А вообще нужен ли Update? Я только изучаю Unity, тренируюсь и проверяю разные идеи и практически забыл, что есть Update. Всё делаю в сопрограммах.

  • @mirNpeace
    @mirNpeace 3 года назад

    Видео просто бомба) Спасибо за старания)

    • @AleksYurchenko
      @AleksYurchenko Год назад

      Коммент просто накрученный треш.

  • @malvislightfadynightgames2925
    @malvislightfadynightgames2925 3 года назад +1

    Я не понимаю откуда ты взял IClickHandler, где ты его описал?

    • @malvislightfadynightgames2925
      @malvislightfadynightgames2925 3 года назад

      Но насколько я понял в этом интерфейсе один метод, который ты вызываешь

  • @argotroll8811
    @argotroll8811 2 года назад

    Добрый день, вопрос применим ли этот паттерн к следующему поведению.
    Персонаж взаимодействует с обьектами, либо передвигается по navmesh.
    Если нажать на обьект песонаж должен подойти к нему и толкьо после этого повзаимодействовать с ним.
    Обычно это дело делают через проверку дистанции до обьекта, но выглядит это давольно тапорно.
    Либо как это реализуется без патернов?

    • @gaitavr1992
      @gaitavr1992  2 года назад

      Стейт машина подойдет

  • @BorisAverin
    @BorisAverin Год назад

    Спасибо

  • @vladfoton
    @vladfoton 3 года назад

    Хотелось бы более разжевано...так сказать, для совсем маленьких)

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Совсем маленьким паттерны еще не нужны) Нужен рабочий, простой код и понимание используемого инструментария (если брать этот ролик, то понимать отличие делегата от события)

  • @yummybunny7351
    @yummybunny7351 2 года назад

    Спасибо за видео. Подскажите, что за синтаксис на 2:05 на строке 20: ~Player(){... - будто конструктор. Что за тильда? Вызывается при уничтожении объекта?

  • @user-kf4ye7zy4z
    @user-kf4ye7zy4z 3 года назад +3

    Ты крут! Но это пока не мой уровень, загляну через пару лет, может что-то понятно станет)) А пока подпишусь на будущее.

  • @angelldark6426
    @angelldark6426 2 года назад

    Це дуже цікаво хотілось би більше інформації і прикладов в коді

  • @mastervolodsobeck5176
    @mastervolodsobeck5176 3 года назад

    Зачет, благодарю бро!

  • @user-yb2xf7lc1n
    @user-yb2xf7lc1n 3 года назад +1

    Я вообще начинающий. Смотрю и ничего не понимаю. И это отличный повод разобраться.

    • @igorshlyakov9321
      @igorshlyakov9321 Год назад

      тоже самое, настолько круто, что я не понимаю ничего)))

  • @romansalnikov5079
    @romansalnikov5079 3 года назад +2

    Безусловно очень полезно, но капец сложно 😅

  • @redice8928
    @redice8928 Год назад

    нет вообще не догадался, даже мысли такой не было

  • @Veyron104
    @Veyron104 Год назад

    нашёл баг: я смотрел, но у меня всплыла подсказка)

  • @Personal_Evoluti_On
    @Personal_Evoluti_On 3 года назад

    От души, Благодарю!

  • @sh1nler243
    @sh1nler243 3 года назад +1

    Вначале я посмотрел - не понял.
    Решил поискать инфу у других, вроде как нашел - (ruclips.net/video/cXU1rETKm24/видео.html) - понял
    Во второй раз посмотрел - кое как, если честно. Тяжело было понять кто там наблюдатель, кто наблюдаемый, где агрегатор и т.д. В конце более менее уже было похоже, то что я где-то в другом месте увидел. "Голова уже кружится, пора отдыхать видимо".
    Можно вопрос? Везде пишут, то что паттерны не нужно на право и на лево впихивать. Для чего как вы думаете больше всего подходит паттерн наблюдатель?

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

  • @TeaCakeGames
    @TeaCakeGames 3 года назад +3

    4:00 жиза 100%, когда игра готова, а из последних сил еще надо прикручивать аналитику то хардкодом ляп ляп в методах, которые делают что-то интересное через статик аналитик класс)

    • @ve1c0m
      @ve1c0m 3 года назад +2

      Я в таких случаях делаю медиатор, который реагирует на какое-то событие с данными, при срабатывании события медиатор берёт эти данные и отправляет в аналитику. Но я тоже грешу и иногда прям в коде хреначу))

  • @slavalopalo128
    @slavalopalo128 3 года назад +1

    EventHolder уже сильно похож на на другой шаблон

    • @gaitavr1992
      @gaitavr1992  3 года назад

      В первом или втором случае?

    • @slavalopalo128
      @slavalopalo128 3 года назад

      @@gaitavr1992 5:30 - больше похоже на посредника

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Ну да, связка получилась

  • @nightkotnightkot9997
    @nightkotnightkot9997 3 года назад

    Что то я не до конца понял... В UserRegistrationInfo то что? В 5.55

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Это обычный класс, там нечего показывать

  • @sdfdfs
    @sdfdfs 3 года назад +1

    Макс го видео по AI в Unity!

    • @gaitavr1992
      @gaitavr1992  3 года назад +1

      О, это как-нибудь потом) Наверное буду делать такое в TowerDefense

  • @davidsedrakyan
    @davidsedrakyan 2 года назад

    такой годный контент и очень мало просмотров((

  • @neverworld8815
    @neverworld8815 3 года назад

    Ты случае не работал в Blizzard ?

    • @gaitavr1992
      @gaitavr1992  3 года назад +2

      Хех, если бы) это моя любимая компания по части игр

  • @SergeyGlukhachev
    @SergeyGlukhachev 3 года назад

    Давно уже на Rx. Касаемо Unity: UniRx, а когда вижу методы Update в чужом коде, то становится не по себе.

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Не нужно от update отказываться. Unirx генерит много мусора

    • @SergeyGlukhachev
      @SergeyGlukhachev 3 года назад

      @@gaitavr1992 Так же как и linq, во всем нужна своя мера, но я вот пришел к тому что мне не нужен update в 95% случаев. ну и я имел опыт что update`ы "жрут" намного больше чем мусор от unirx - между двух зол выбирай меньшее

  • @vladyan01
    @vladyan01 3 года назад

    Как понять паттерн? Типа шаблон или что?

  • @user-pj5np8wo6i
    @user-pj5np8wo6i 3 года назад

    колбэк зло, await рулит)

  • @WeslomPo
    @WeslomPo 3 года назад +1

    2:50 Говоришь "Слабая связанность" - и тут же делаешь жоскую ссылку на статический класс, вместо нормального получения зависимости через конструктор и подписки на событие у этой реализации >__

    • @gaitavr1992
      @gaitavr1992  3 года назад +1

      Со статическим классом связанность жесткая, а между конфиг провайдером и остальными частями системы слабая. Когда у вас в проекте будет необходимость пробросить в несколько конструкторов вглубь какую-либо систему - я бы на это посмотрел. Ну или в крайнем случае использовать DI контейнер

    • @WeslomPo
      @WeslomPo 3 года назад

      @@gaitavr1992 а кто в наше время в здравом уме работет без DI на сложных проектах? В любом случае, код с конструктором проще поддерживать, чем код в котором куча статических классов с состоянием. Потому как понятно какие у класса зависимости и их можно подменить во врем тестирования (при условии использования интерфейсов).

    • @gaitavr1992
      @gaitavr1992  3 года назад +3

      Сразу 2 пункта: DI тяжелый, для многих проектов это критично, проходили.
      DI - расслабляет разработчика планировать свою архитектуру, бахнул INJECT и готово, вы когда-нибудь строили дерево зависимостей в таких проектах, я видел тысячи узлов, которые невероятно сложно менять. EventHolder это один из классических способов внедрения посредников в работу, есть возражения?

    • @WeslomPo
      @WeslomPo 3 года назад +2

      ​@@gaitavr1992 EventHolder - это типичная шина событий из времён AS3 - AddEventListener и прочее безобразие, столько этого мусора перековырял в проектах того времени не перечесть - подисаться подписался - а отписаться забыл - приплыли, потеря памяти, плавающие ошибки. А на счёт бахнуть Inject - я вот ща в проекте на 165000 строк запустил поиск - 2 применения (компонент локализации и система окон - для резолва панелей) - все остальные зависимости передаются через конструктор - в среднем не больше 5 зависимостей (локализация и аналитика не в счёт). Зависит от того как вы выстроите в своей команде подход к разработке, проверке кода и прочему - следуешь простым правилам и код не становится совсем уж плохим.

    • @gaitavr1992
      @gaitavr1992  3 года назад +2

      Если бы все эти правила были просты, то тех долг никогда не возникал бы

  • @Eduard02834
    @Eduard02834 3 года назад

    +

  • @user-tb7yn5yy3g
    @user-tb7yn5yy3g 3 года назад

    Я думал я прям совсем говнокодер,а оказывается что я "наблюдатель"=)

    • @gaitavr1992
      @gaitavr1992  3 года назад +1

      В рамках этого канала продолжайте оставаться)

  • @Tumanop
    @Tumanop 3 года назад +1

    Вроде тема хорошая и текст неплохой, но этот говор или акцент… пи***ц бесит что тошнить начинает после 5 минут просмотра

    • @gaitavr1992
      @gaitavr1992  3 года назад +9

      Не смотри, мне не сильно интересен подобный фидбек

  • @YACommunity
    @YACommunity 2 года назад +1

    Ничего не понял но было очень интересно, лайк.