ไม่สามารถเล่นวิดีโอนี้
ขออภัยในความไม่สะดวก

Опыт использования MVVM в Hustle Castle, Сергей Лейко

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ก.ย. 2021
  • Поговорим о том, что такое MVVM и немного о реактивном программировании. На примере Hustle Castle увидим, как начали внедрять MVVM на живом проекте и посмотрим, что из этого получилось.

ความคิดเห็น • 24

  • @user-mw2cd3lu8n
    @user-mw2cd3lu8n ปีที่แล้ว +4

    8:08 ребят, то что вы связали слой логики и слой представления - это как бы фейл 💁‍♂️🤦‍♂️

  • @unreidunity2737
    @unreidunity2737 2 ปีที่แล้ว +1

    А как не использовать пространство unity в VM? Допустим на нужен Transform или иные unity:вские типы, что делать тогда?

    • @user-cx1vt1kp1j
      @user-cx1vt1kp1j ปีที่แล้ว +4

      MVVM плохо подходит к геймплейному коду. MVVM это больше для UI

  • @Tumanop
    @Tumanop 2 ปีที่แล้ว

    Хороший доклад

  • @igor_rikhard
    @igor_rikhard ปีที่แล้ว +8

    Вы неправильно прикрутили MVC: view - это монобех, controller - вчя логика, модель - это данные

    • @yuryshumovsky7814
      @yuryshumovsky7814 ปีที่แล้ว +1

      плюсую. в том MVC что я сталкивался, view он же префаб, он же monobehaviour, и он не знает о модели и контролере вообще ничего, только свои события может испускать + иметь public аля Show/Hide/Play/UpdateName... и конроллер уже управляет или одним таким view или какой-то серией. В Hustle Castle чуть другое видение похоже было на тот момент.
      а PriceView с примера как-то натянуто вышло )) почему цвет не зашит в префабе? зачем это передавать? bool checkHasEnought вообще там не должно быть

    • @user-mw2cd3lu8n
      @user-mw2cd3lu8n ปีที่แล้ว +2

      Тоже решил комментарий на этот счет оставить, что реализация паттерна выбрана крайне неудачная. Слайд на 04:00
      Такое ощущение, что те кто поддержал такую реализацию шаблон долго работали в web'е на фронтенде и слабо себе представляли как устроен движок unity. 😁

    • @rox.3346
      @rox.3346 ปีที่แล้ว

      @@yuryshumovsky7814 в моём понимании Model - это объект с данными, ViewModel(Controller) - скрипт которые реагирует на изменения данных в Model и меняет значение в компонентах Text и т.д., а View - это то, что нам даёт Unity - сами компоненты Text, Image, Button и так далее

    • @COOKIEMONSTER90
      @COOKIEMONSTER90 ปีที่แล้ว

      ​@@rox.3346 Не, это не правильное представление. Модель запускает ивенты при изменении своих данных. На эти ивенты подписаны копии данных во ViewModel. На данные во ViewModel подписан View-монобех, в котором есть рефы на ui-элементы. Так же ViewModel подписана на ивенты ui-элементов из View. Если юзер взаимодействует с ui, то ViewModel изменяет данные в модели, потом ViewModel изменяет свою копию этих данных и обновляет View.

  • @COOKIEMONSTER90
    @COOKIEMONSTER90 ปีที่แล้ว

    21:19 Что происходит внутри DisposeOnDestroy?

    • @COOKIEMONSTER90
      @COOKIEMONSTER90 ปีที่แล้ว

      Короче мозга пока хватило на такой вариант:
      В классе, где прописано расширение геймобжекта “Subscribe” можно создать статичный словарь, в котором ключ - это геймобжект и value - это List
      В методе DisposeOnDestroy добавляем в лист словаря по ключу в виде геймобджекта объект propertyHandler(он наследует IDisposable)
      Пишем метод расширения геймобжекта DisposeDependables, в котором проходим по нужному списку из словаря и вызываем Dispose у всех propertyHandler’ов
      Во вьюмодель, в OnDestroy прописываем вызов DisposeDependables. Т.е. вот так он вызывается: gameObject.DisposeDependables().

  • @evggg
    @evggg ปีที่แล้ว +5

    Опять поверхностный доклад. Где код? Где примеры прям в юнити+IDE? Как это выглядит на практике? Что за роутер, опять же не понятно - вроде сначала говорили, что в MVVM 3 компонента, а тут еще четвертый какой-то появился.

    • @COOKIEMONSTER90
      @COOKIEMONSTER90 ปีที่แล้ว

      Да уж. В чем прикол объяснять алгоритм, но скрыть его исполнение. Как подписка и отписка View ко ViewModel происходит тоже не показано
      «Идем в обработку ивент провайдера» и тупо обработка ивент провайдера скрыта внутри не показанного метода. Браво, блин.

    • @COOKIEMONSTER90
      @COOKIEMONSTER90 ปีที่แล้ว +3

      Я связался с Сергеем. Он сказал, что через несколько недель, как разгребет работу, подготовит и выложит на гитхаб код и здесь оставит ссылку.

    • @qwww..8628
      @qwww..8628 8 หลายเดือนก่อน

      Еще не выложил?
      @@COOKIEMONSTER90

    • @COOKIEMONSTER90
      @COOKIEMONSTER90 8 หลายเดือนก่อน

      @@qwww..8628 выложил, но ссылку не добавил по ходу. Сейчас подумаю как ссылку запилить, чтобы коммент с ней не удалили

    • @COOKIEMONSTER90
      @COOKIEMONSTER90 8 หลายเดือนก่อน

      @@qwww..8628 короче на гитхабе уже удален репозиторий. У меня копия имеется, постараюсь завтра залить куда-нибудь и оставить ссылку

  • @COOKIEMONSTER90
    @COOKIEMONSTER90 5 หลายเดือนก่อน

    Если кому нужен проект с кодом, то ищите название репозитория в комментах к видео про производную в моем профиле. Здесь коммент с названием репозитория удаляется почему то.