Vertical Scroller - заключение, Паттерны на практике, DialogManager, Entry Point, Unity C#

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

КОМЕНТАРІ • 36

  • @user-mm7ch3xw4e
    @user-mm7ch3xw4e Рік тому +2

    Комментарий в поддержку канала. Смотреть будем потом)))

  • @pashafilenko1567
    @pashafilenko1567 Рік тому +2

    Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?

  • @mikki5923
    @mikki5923 Рік тому +2

    Я сейчас пробежусь по всем видео и каждому лайк поставлю. Ты топ! Продолжай за MVVP, MVP огромное спасибо. Просто пушка.

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

    Спасибо за контент!
    Касательно entry point и composition root - это все про DI. Как раз читаю книжку по нему.
    И да в копозишн рут может полная шляпа твориться и это не всегда страшно.

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

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

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

    Царский лайк!
    Очень долго не тыкал в юнити потому что было непонятно как писать по науке без драга префабов в инспектор (;

  • @nightyonetwothree
    @nightyonetwothree 11 місяців тому

    по сути весь DI очень удобно прокидывать через ентри поинт, там же использовать сервис локатор. Что убирает потребность в синглтонах, т.к. все зависимости теперь либо достаются из локатора, либо прокидываются в конструктор/инициализацию из ентри поинта.

    • @sergeykazantsev1655
      @sergeykazantsev1655  11 місяців тому +1

      Согласен. В том же зенжекте все зависимости устанавливаются в тех же MonoInstaller, который етри поинтом и является.
      Впрочем у меня под одним из видео была жаркая дискуссия где оппонент доказывал, что сервис локатор имеет те же проблемы что и у синглтона и вообще используйте DI-контейнеры а не SL. Оппонент был во многом прав, но всё же я считаю что в некоторых местах SL вполне себе подходит)

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

    Спасибо за классное видео! У меня вопрос по окнам:
    Почему нельзя держать всё диалоговые окна на канвасе в неактивном состоянии и просто Show/Hide их когда это необходимо? Мне даже тяжело вспомнить случай диалогового окна, которое не покажется за время жизни сцены… У окон Win/Lose - ~50% быть показанными. Т.е. я хочу спросить, в чём кроется главная проблема, которая вынуждает нас инстанциировать прифабы окон при их необходимости, а при закрытии дистроить их?

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

      Если у вас 5 типов окон, да, можно их создать и пусть лежат выключенными на сцене. Но надо контролировать за ними ссылки и чтобы не было каких-то условий чтобы одновременно на сцене не было 2х окон одного типа(например 2 окна шмотки, когда вы сравниваете новый и старый меч)
      Если же окон у вас много(100+), как в каком-нибудь Raid, то хранить всю эту портянку на сцене будет и визуально муторно и по памяти не очень.
      К тому же не стоит забывать что есть вложенные окна, когда одно окно является внутренним меню другого(инвентарь - инфо о предмете - окошко усиления предмета). Такое на сцене хранить будет крайне неудобно и сложно.

  • @botcser
    @botcser 9 місяців тому

    Уважаемый товарисч джедай, будут ли ролики про паттерны Адаптер, Декоратор, Proxy?

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 місяців тому

      Декоратор в планах, где-то четвёртый в очереди

    • @botcser
      @botcser 9 місяців тому

      @@sergeykazantsev1655 Мда, на Адаптер лучше даже не тратить время

    • @sergeykazantsev1655
      @sergeykazantsev1655  9 місяців тому

      Почему?)

    • @botcser
      @botcser 9 місяців тому

      @@sergeykazantsev1655 Слишком элементарный и очевидный

  • @twsqrt-1228
    @twsqrt-1228 Рік тому

    Здравствуйте. Хотел спросить, можно ли использовать Service Locator (и подобные сомнительные паттерны) для демонстрационного проекта, который будет оценивать работодатель? Насколько вообще это критично для джуна?

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

      Здравствуйте, я бы сказал, что зависит от того, будет ли общение по вашему проекту с работодателем.
      Если после отправки задания обязательно будет созвон с лидом который задаст вам вопросы по проекту - то можно. Просто вы на созвоне объясните что знаете, что сервис локатор много где считается антипаттерном, и что в целом все рекомендуют вместо него использовать DI-контейнер.
      Если же созвона не будет или есть высок риск что после отправки проекта до созвона не дойдет... Может нет смысла рисковать.
      Хотя несмотря на то, что у нас было под видео про сервис локаторов несколько жарких дискуссий где мне довольно конструктивно объясняли почему сервис локатор - антипаттерн, я всё ещё убеждён что для небольших проектов его можно использовать.

    • @twsqrt-1228
      @twsqrt-1228 Рік тому

      @@sergeykazantsev1655 Спасибо за ответ.

  • @user-mu2du3np7d
    @user-mu2du3np7d 6 місяців тому

    Спасибо за инфу.
    А в чем реально проблема со script execution order?
    Everyone talks about this sh*t, but noone explains "почему плохо его использовать, и в чем реально состоит проблема?"

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

      Проблема заключается в том, что если у вас игра зависит от порядка инициализирования систем и вы используете Script Execution Order - высока вероятность того, что в будущем у вас будут большие проблемы. Много систем будут зависеть друг от друга, правильный порядок инициализации настроить будет очень болезненно, в Script Execution Order попадёт больше половины написанных систем и огромную часть времени вы будете тратить не на модификацию или написание нового кода, а на распутывание этого порядка инициализации

    • @user-mu2du3np7d
      @user-mu2du3np7d 6 місяців тому

      А в чем разница прописать порядок инициализации систем в script order-е или через свежий класс bootstrap-a, entryPoint-a?
      Из далека действия очень похожи между собой...

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

      Да, они действительно похожи между собой, но я бы сказал что тут проблема в наглядности и явности. Если у вас есть entry point или bootstrap, любой разработчик вступающий в команду сразу видит порядок вызовов. А если разработчик не в курсе, до идеи залезть в Script Execution Order он дойдет очень не сразу)

    • @user-mu2du3np7d
      @user-mu2du3np7d 6 місяців тому

      Получается какая-то аксиома Эскобара если сравнивать

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

      Один из вариантов считается более прозрачным и нагглядным)

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

    Сергей, вы собираете делать свой курс, или вы настоко щедрый,что бесплатно и дальше будите выкладывать такие хорошие уроки.

    • @sergeykazantsev1655
      @sergeykazantsev1655  Рік тому +2

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

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

      @@sergeykazantsev1655 Спасибо, вы у нас на вес бриллиантов)

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

    Нравятся ваши видео, не думали завести тг канал?

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

      Ну если 5к подписчиков наберу - заведу) А пока нет особой нужды)

  • @botcser
    @botcser 7 місяців тому

    "Странно пропихивать префабы окон в gamecontroller"? А не странно ли гавнокодить окна вручную в инструменте, который предоставляет возможность создания и управления окнами посредством UI Editor, чтобы не нужно было гавнокодить их вручную. Да и зачем префабы, просто включать/отключать объекты на сцене (окна).

    • @sergeykazantsev1655
      @sergeykazantsev1655  7 місяців тому

      То есть если у тебя под тридцать разных окошек в игре, они все должны быть сразу на сцене?
      А модифицировать и переделывать окна как если префабов нет? Прямо на сцене? Как историю изменения префабов отслеживать?

    • @botcser
      @botcser 7 місяців тому

      @@sergeykazantsev1655
      Да хоть 100500, какая разница, если они все аккурат разложены по папочкам с говорящей иерархией и имеют простую и понятную структуру, тем более что одновременно активны из них 1 - 4шт.
      И зачем кучу окон? Одно окно-оверлей для сообщений пользователю с гридом для кнопок (ошибка, инфо, вопрос (даже ввод цифр можно встроить)), другое для наград, третье для результатов игры... штучная вещь. Окна само переделываются исходня из входных данных (количество награды, иконки... небольшие изменения).
      Тем более что с того что они на сцене, не нужно тратиться на инстанцирование и удаление. Мутить ObjectPool както слишком мелко.
      Я не понимаю, зачем чтото программируется вручную, если для этого было сделана среда разработки, чтобы это разрабатывать мышкой через интерфейс. Тоже самое, что создавать массив, структуру, наделять его методами, когда можно воспользоваться готовым List.

    • @sergeykazantsev1655
      @sergeykazantsev1655  7 місяців тому

      Как я уже сказал есть несколько причин. Первая - это командная разработка. Если префабов окон нет, первый разработчик сделал новое окно А, а второй разработчик в этот же момент сделал новое окно Б, в главной ветке будет конфликт в файле сцены. Распутывать такое без префабов очень сложно.
      То же самое касается отслеживания истории изменений окна. По префабу легко и довольно удобно отследить мелкие точечные изменения (сделали шрифт побольше, цвет кнопки поменял и тд) - по сцене непонятно какой именно элемент поменялся
      Плюс есть окна которые используются в нескольких сценах. (Окна подтверждения, каких нибудь настроек и тд) - добавлять их на несколько сцен? А если окно изменилось, надо на каждую сцену переносить новое окно? А как если нет префаба

    • @botcser
      @botcser 7 місяців тому

      @@sergeykazantsev1655
      Спасибо за разъяснения. Но. Чтото насчет командной разработки мутно объяснил) конфликты могут быть везде, если нет взаимосвязей и системы и возможностью бесконтрольно создавать. При окнах-объектах на сцене всё понятно - вот есть окно оверлей отвечающее за вывод инфу поверх всех окон, хочешь чтото сказать пользователю - узнай как оно работает и вызывай; вот окно результатов... нужно новое окно - обсуди, создай по подобию существующих; а создать префаб объекта и плюхнуть его на новую сцену, распаковав префаб - изи. Менеджер окон наконец мб с аля шиной эвентов. История? Гитхаб в помощь.
      Не знаю, ощущение, что создавать UI в Unity из кода из статичных данных это зашквар (простой в 90%).

    • @sergeykazantsev1655
      @sergeykazantsev1655  7 місяців тому

      Ну давай попробую яснее объяснить
      Есть два юнитолога в команде: Вася и Петя
      Васе надо сверстать окно YouWinDialog, Пете YouLoseDialog.
      Вася и Петя как правильные люди создают ветки от мастера в Гите, верстают окна и добавляют их как не префабы на сцену. Вася вливает свой диалог в ветку мастер, Петя пытается влить свою и бац, возникает мерж конфликт, потому что на месте куда Петя поставил youlosedialog, стоит Васин youwindialog
      И опять же, как ты по Гиту по истории гита поймёшь какие изменения ты сделал в том или ином окне? У тебя а истории будут изменения только в файле сцены