Паттерн состояние в unity 3D

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

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

  • @nikolai4660
    @nikolai4660 3 года назад +20

    Как всегда, все на высшем уровне! Устроился в геймдев и теперь стабильно использую твои ролики для работы) Продолжай том же духе! Спасибо большое за твой труд, такого качественного контента на рускоязычном сегменте крайне мало!

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

      Какие ролики помогают?

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

      @@gaitavr1992 рефакторинг

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

      @@gaitavr1992 По началу базовые были самые просматриваемые такие как: атрибуты, расширения, делегаты и т.п. Сейчас уже паттерны, так как грамотно подобрать архитектуру при разработке это чертовски важно. Правда из-за разницы в уровнях, приходится ролик продолжительностью минут в 10 пересматривать раз за разом, но я думаю это уже временные издержки)

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

      Главное столкнуться на практике с проблемой, чтобы понимать решение с помощью паттерна

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

      @@gaitavr1992 Получается все топорно, но верно. При рефакторинге уже идет понимание))

  • @STARasGAMES
    @STARasGAMES 3 года назад +39

    Вроде как круто, но в тоже время довольно тяжко воспринимать. Я этот паттерн вдоль и поперёк знаю, но местами было трудно следить за видео. Есть ощущения что видос больше для тех, кто уже знаком с этим паттерном.
    Это кста не упрёк, просто чтобы автор лучше понимал, для какой аудитории делает видева.
    Спасибо за полезный контент.

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

      Все верно, цель канала - подхватывать тех, кто уже стал на эту дорогу

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

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

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

      @@startup_tv_k по паттернам нечего заливать, это выдуманный код

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

      @@gaitavr1992 макс, посоветуй пожалуйста Musthave статьи или книги по паттернам, да и вообще по unity

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

      @@gaitavr1992 Ну все понимают, что выдуманный, но всё же, было бы проще и привычнее полазить по файликам на гите, чем перематывать по 100 раз видео)
      p.s. Такого информативного контента на ютубе почти нет, а тут ещё и на русском) Спасибо

  • @behappianstudio3576
    @behappianstudio3576 3 года назад +16

    Как всегда прекрасно, Максим Паттернов))

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

    Как раз делал систему передвижения для игрока через if/else, если стоим на земле или плывём по воде и т.п. После ролика понял, что это все можно вынести в состояние и получить более удобную и гибкую систему.
    Конечно, чтобы вынести все зависимости из контекста, пришлось поломать голову, но оно того стоит. Спасибо за добротный контент)

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

      Надеюсь перенос пройдёт гладко) не всегда так получается

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

    Очень рад, что наткнулся на этот канал!

  • @viaches-guitar
    @viaches-guitar Год назад

    Большое спасибо, а то я оказывается использовал стратегию для смены состояний

  • @АлександрМаксимович-м4р

    Всё очень прекрасно. По поводу создания дополнительных класса Transition - тут же контролируется и в какие State может перейти объект. И логика будет в них. Выглядит очень удобно.

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

    Ещё бы хотелось увидеть видос на тему специфики юнити при программировании. Как конфликтует система компонентов юнити и ООП. Как это влияет на архитектуру юнити приложения. Как решать проблемы с пробрасыванием зависимостей. Нужны ли архитектурные паттерны в юнити (mvp, mvc и т.д). Ну и ECS как архитектурное решение в ту же кучу.

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

      Присоединяюсь к вопросу по MVP. Впечатление такое, что всем оно нужно, но никто не может объяснить, зачем.

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

    Очень доходчиво и понятно!

  • @МихаилКрасаков-ж6ю
    @МихаилКрасаков-ж6ю 3 года назад +1

    Спасибо, было очень полезно!

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

    Отличный видос! Очень нужный паттерн

  • @Wild-Birds-and-Animals
    @Wild-Birds-and-Animals 3 года назад

    Очень интересно и понятно объясняете, спасибо!!!

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

    Максим, когда осенью готовился к своим занятиям -нигде не нашел норм видосов по шаблонам именно в Юнити. Шикарные уроки!! Людям это нужно

  • @Kot-Alenya
    @Kot-Alenya 3 года назад +2

    Ух , никогда не учил паттерны, но и процедурным кодом , тоже уже не пишу.Оказывается всё уже придумали и додумали за меня и нужно просто найти паттерн для то или иной ситуации... Немного разочаровывающие умозаключение . Столько времени было потрачено на придумывание систем , если бы я сразу учил эти поведения ....Спасибо большое за урок жду новых паттернов ! )

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

      Очень часто паттерн не помогает и приходится его нарушать

    • @Kot-Alenya
      @Kot-Alenya 3 года назад

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

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

      Согласен

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

    Пожелание: разбить ролик на части (сделать закладки), вступление, основная часть и заключение, плюс в основную часть добавить закладки на примеры кода и основные моменты. Многим сдесь будет удобно искать примеры кода в будущем. Второе: фон за теукстом размывать и сделать максимально контрасным фон и текст и НЕ использовать эффекты текстов и т.д. Посоветовал бы сделать один раз шаблон и им пользоваться. А так все отлично. Спасибо за ролик.

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

    Шикарно, благодарю Максим)

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

    Спасибо, за ролик! Всё рассказано понятно, размеренно. Буду применять. А то хоть я и разбил код на вьюшки, модели и контроллеры, а мешанины все равно много получается.

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

    Класс Transition еще глобальным для всех стейтов может быть, к примеру для разновидностей ботов

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

      Если они не сложные

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

    Есть очень хорошая и гибкая реализация этого паттерна на ScriptableObject. Шикарно работает.

  • @ИгрушкиИльюшки
    @ИгрушкиИльюшки 3 года назад

    Отличное, полезное, познавательное видео

  • @ИльяОрлов-к2ж
    @ИльяОрлов-к2ж 3 года назад

    Супер, больше бы таких каналов не за что не забивай на ютуб! Можешь сделать пожалуйста видео, если будет время, как стоит подходить к реализации паттерна состояние или его аналога в случае работы с фреймворком на ECS будь то unity dots или LeoEcs

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

      С ecs проблема, оно сырое, как недоваренные пельмени. Я бы подождал чего-то более стабильногл

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

      @@gaitavr1992 Entitas давно уже допилен, а LeoECS постоянно допиливается и уже используется в продакшене.

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

      То, что я видел - далеко от допиленного

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

      @@gaitavr1992 О буду рад, аргументированной критике. Спасибо заранее.

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

      Я использовал стандартный ECS и там огромная проблема с анимациями. У меня были префабы врагов и я не нашел никакой возможности проигрывать те же анимации(бег, смерть и тд).

  • @МихаилЗайлогин
    @МихаилЗайлогин 3 года назад

    Контент огонь. Наверное по паттернам в Unity ничего подобного на рус. ютубе нет

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

      Какая разница в юнити этот патерн или не в юнити

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

    лайк и коммент, автору респект,)

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

    Вместо листа со стейтами используй дикшинари Dictionary() и в
    SwitchState() where T : BaseState {
    if(!_allStates.TryGetValue(typeof(T), out _currentState) {
    //обработать ошибку если стейт не найден.
    }
    }

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

    считаю этот паттерн обязательным для изучения/использования, у меня просто 2 примера игр над которыми я работал в одном и том же жанре с разницей почти 5 лет, в котором можно улучшать разные постройки, хоть и в большинстве случаев улучшение постройки не меняло ее механик, но были такие что совмещали в себе разные механики, это был ад с кучей наследований чтоб сделать нужные механики для одного юнита тратилось до нескольких дней работы, щас сделав все на стейтах, такой юнит может сделать даже геймдизайнер, просто добавив или убрав пару строчек в json файл

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

      Или через scriptable objects, как insane one показывал

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

      ECS

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

    То что нужно.

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

    Твои видео как самородки в русскоязычной части ютуба

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

      не только в русскоязычной

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

    огонь, всё супер чётко, спасибо
    (☞゚ヮ゚)☞

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

    хорошие видео ,хотя и не много трудно уловить смысл , если ты не синьер, из за огромного количества профессиональных терминов, очень полезно и интерсно

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

      Этот паттерн должен знать даже джуниор-мидл

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

    спасибо!

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

    Добрый день, Максим. Мне Очень нравятся ваши ролики и подход преподавания. Есть ли у вас курсы по паттернам? Если нет, то могу посоветовать какого рода курсы бы приглянулись изучающим данную тему. Пример "Проект в юнити с использованием паттерна проектирования". Можно на udemy залить или как вам угодно.
    Для зрителя - Ставь лайк комменту, если хочешь такой курс.

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

    Превьюха сочная)

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

    Спасибо
    Дякую

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

    Спасибо

  • @МаксКузнец-п1б
    @МаксКузнец-п1б 3 года назад +3

    а state и state machine это одно и тоже или это разные вещи? А ещё можно попросить вас выкладывать код, хотелось бы пощупать его что бы лучше понять.

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

      Одно и тоже. По паттернам нет смысла код выкладывать, так как он выдуманный

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

      @@gaitavr1992, подскажите пожалуйста, в репозитории по товердефенс есть коммиты по урокам? Или только текущий проект? Сейчас повторяю пошагово Ваш проект и иногда по невнимательности что-то пропускаю, а потом не могу понять, где накосячил. Также подвопрос. Исходный проект с игрой это переработка статьи с Catlike Coding?

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

      Недавно начал делать ветки под каждый урок и вливать их одним коммитом для удобства. По поводу cat like coding, да, я взял основу и пошел дальше

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

    хорош

  • @Vladimir_Senkovets
    @Vladimir_Senkovets 3 месяца назад

    Как грамотно сделать таймер в BrokenState? Мы же не можем использовать корутину прямо в BrokenState, так как выдаст NullReferenceException из-за того что мы экземпляры делали через new. Я нашел на форумах что нужно использовать AddComponent. Я чувствую что есть элегантное решение, но я ,в силу малого опыта, не вижу.

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

    Спасибо. А как смену анимации вплести в данную реализацию паттерна? Пытаюсь реализовать состояние NPC, все вроде понятно и работает, но не пойму, как подключать разные анимации (атака, погоня, патрулирование) при таком подходе. Примеры переключения анимаций в ютубе все с наследованием от StateMachineBehavior, но как-то интуитивно не хочется его использовать.

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

    Ну и да, я бы все равно не говорил, что это то как всегда нужно делать стейтмашину. Вот допустим банальный парсер какого-нибудь сетевого протокола, который поверх TCP/IP. Допустим Http. Тут не будет добавляться новых состояний с одной стороны, с другой - логика будет в одном месте, а не размазана по куче классов.
    Да, я понимаю, что в случаях когда мы переходим на уровень выше - лучше использовать что-то типа того что в видео, но прозвучала мысль, про то что нам нужно всегда так делать, я вот с этим не совсем согласен. Да и майки, судя по тому как у них парсер того же Http реализован - тоже.
    В остальном - хорошее видео. Я бы советовал его тем, кто только знакомится с паттернами.

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

      Не совсем понял при чем парсер к стейт машине? Если несколько степов то это цепочка обязанностей

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

      ​@@gaitavr1992
      Кхм. Я могу быть не прав, нам лексический анализ на втором курсе давали, но классический парсер - это стейтмашина, которая получает на вход последовательность лексем, затем - обрабатывает их и в зависимости от правил грамматики - позволяет построить структуру, либо завершиться ошибкой.
      Банально: Text - мы получили вот такую вот строку, лексер разбил это на: [начало открывающего тега, текст, конец тега, текст, начало закрывающего тега, текст, конец тега], парсер, который должен построить DOM-дерево - должен иметь состояния, чтобы в зависимости от него - понимать - должны ли мы создать ноду, должны ли мы в метаданные документа что-то добавить или вообще кинуть ошибку. Как без состояний этот парсер-то должен работать?

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

      Теперь понял, так а где противоречие в видео?

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

      @@gaitavr1992 Я вроде не говорил о противоречиях, просто отметил, что не для каждой стейтмашины нужно пользоваться паттерном состояние (банально стейтмашину в 100 строк, лично я бы не стал резать на несколько классов, особенно, если она - является чем-то классическим и не предполагает изменений).
      Ну да ладно. Я же вроде сказал, что видео - хорошее и новичкам полезно будет.

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

    Отлично рассказано, но не до конца понятен дефолтный вариант перехода состояний. Условно говоря я должен в каждом стейте в GoToNextState забить все условия на основе которых он перескочит в то или иное состояние? До кучи к этому надо будет создать следующий стейт и как-то его вернуть в контекст?

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

      Речь идет о втором варианте, где контекст сам решает когда переключать?

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

      @@gaitavr1992 вроде как да. Но я и тему со switch state не очень понял. Типа туда передается дженерик, это вроде понятно. Но где происходит сам контроль и решение по переключению.

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

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

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

      @@gaitavr1992 А, во втором варианте в старте очередь задается, и они просто подряд выполняются. Примерно дошло, надо на практике попробовать.

  • @UserUser-ol8fx
    @UserUser-ol8fx 3 года назад

    Здравствуйте, Максим. Отличное видео, спасибо. Не знаете ли Вы реальных проектов с хорошим открытым исходным кодом и, в частности, с реализацией паттерна состояние? Проекты любой тематики, не обязательно игры и юнити. Хотелось бы увидеть на практике использование данного паттерна, так как остались некоторые вопросы по реализации. Например, как вызывать общие функции в классе-контексте из классов-состояний не нарушая инкапсуляцию, оставляя внутренние методы приватными для внешнего кода, но открытыми для классов-состояний.

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

      Мне недавно на ревью стейт машину скинули, сделаю обзор. А по поводу контекста - выносить в интерфейс явно и работать с ним внутри состояний

    • @UserUser-ol8fx
      @UserUser-ol8fx 3 года назад

      @@gaitavr1992 Спасибо, буду ждать ревью. Вы очень доходчиво и понятно объясняете, хотелось бы увидеть видео о паттерне посетитель, visitor. Сколько о нем не читал, так до конца и не понял, когда его нужно использовать.

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

      Он один из самых сложных

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

    Либо я как-то просмотрел, либо это надо учесть: не хватает примеров клиентского кода по работе с стейт машиной, чтобы логическая завершенность что ли была, и понятно было до конца, куда мы приехали

  • @skf-wm7ft
    @skf-wm7ft 2 года назад

    Получается что Animator и есть пример машины состояний. Если я правильно понял. Дякую. Мирного неба.

  • @-LGK
    @-LGK Год назад

    Что за класс SliderFiller, не нахожу. Да и компонента такого.

  • @СавелийПетров-з4ф
    @СавелийПетров-з4ф 3 года назад +1

    У меня возник вопрос как передавать вечно изменяющиеся параметры, например трансформ врага если кидать его в конструктор будет ошибка, а если в апдейт будет ли это рационального? Если заметили и ничего не поняли отпишитесь я лучше опишу вопрос

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

      Враг должен сам работать со своим трансформом

    • @СавелийПетров-з4ф
      @СавелийПетров-з4ф 3 года назад

      @@gaitavr1992 а как тогда реализовать состояние патрулирования? Если только враг может работать с трансформом?

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

      Врагу задаются точки и он ходит. Если вопрос про сам класс состояния, то можно вынести метод move у врага и состояние будет использовать его

    • @СавелийПетров-з4ф
      @СавелийПетров-з4ф 3 года назад

      @@gaitavr1992 то есть нужно будет просто вынести движение, а не сам класс с состоянием патрулирования?

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

      Состояние патрулирования будет управлять логикой перемещения, а функционал предоставится внутри врага

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

    А что делать если метод остался пустым? К примеру если у меня не было бы поля Text то можно ли было оставить методы в некоторых состояниях пустыми? Спасибо.

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

    А можно разбор нового input system?

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

      Я еще не пользовался

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

    Привет! При использовании паттерна возникают неудобства, когда состояние нуждается в редактировании закрытых (приватных) членов контекста. Примером может служить состояние персонажа:
    В состоянии "Жив" персонаж может получать урон и как следствие поле его текущего здоровья меняется. Однако это поле не должно быть доступно изменению из вне никому, кроме класса состояния "Жив". Есть ли совет по решению этих проблем? Я нахожу 2 решения, где первое заключается в открытии полей для редактирования из вне (что является жутким костылем), а второе в использовании unsafe кода и указателей.

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

      Либо выделять модель состояния и модифицировать ее либо через интерфейс работать с контекстом. Никакие указателей)

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

      @@gaitavr1992 Хорошо, посмотрим что можно сделать:) Мог бы ты как-нибудь рассказать об unsafe коде и указателях? Как движок реагирует на изменение значений в памяти и т.п. По-моему очень интересная тема и много подводных камней.
      Было бы интересно услышать мнение эксперта.

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

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

    • @ВасильевВячеслав-ъ5д
      @ВасильевВячеслав-ъ5д 3 года назад

      ​@@gaitavr1992 Спасибо за это видео, первое настолько полное и грамотное объяснение FSM, которое я встречал. Хочу узнать твое мнение:
      Тоже оочень долго думал над лучшей реализацией этого паттерна и вот к чему сейчас пришел:
      1. Класс контекст НЕ должен реализовывать интерфейсы, как IStateSwitcher, это нарушает инкапсуляцию, тк любой вызывающий код может привести его и изменить состояние. Вместо этого делаем класс StateSwitcher, который хранит в себе логику смены состояний и само состояние. Класс StateSwitcher находится внутри класса-контекст.
      Вот примерный интерфейс класса StateSwitcher:
      void SwitchState() {//logic...} where ConcreteStateT : AbstractStateT
      AbstractStateT CurrentState => _currentState;
      2. Классы-состояния следует делать приватными и внутренними к классу-контексту, а в их конструктор стоит передавать класс-контекст. Пример класса-состояния:
      pastebin.com/J5wbGrh1
      Из плюсов: больше инкапсуляции = больше безопасности использования.
      Из минусов: Классы-состояния больше нигде нельзя использовать, кроме как в классе контексте, в котором они содержатся.

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

      В реальном проекте этого сложно добиться, когда все разрастается.

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

    Запускать стейт машину как корутину - норм практика ведь?

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

    А вот может кто-то ответит на такой, возможно нубский, вопрос? Все, что я о паттернах нахожу, даже на примере юнити, все красиво и понятно, но не пивязано к монобихевиорам. к чему я это. когда описывают какую-то вещь вроде наследования сущностей от какой-то общей болванки( человек: солдат, медик, гражданский) и красиво юзают всевозможные полиморфные штуки, то как эти иерархии привязываются к геймобжектам, олицетворяющим те сущности? У Сакутина видел визитер, где результат рейкастхита обрабатывался логикой визитера, но иерархия хитов полностью отвязана от игры. тут то я и сдулся. +-есть понимание применения тех или иных штук, но в разрезе юнити туплю. хелп)

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

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

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

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

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

      Класс из которого выносится логика в состояния, для остального кода с ним точно также можно работать

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

      @@gaitavr1992 то-есть контекст - это класс из которого мы вынесли логику в состояния?

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

      Да

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

      @@gaitavr1992 Значит я правильно все понял, спасибо большое. Ролики класс

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

    А что делать с методом SwitchState? Он ведь публичный получается

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

      Явно интерфейс указать, тогда остальной код не будет о нем знать

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

      @@gaitavr1992 спасибо. Буду применять

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

    За такую диаграмму классов меня бы выебали, если честно. Лучше держись стандарта uml. Хорошо сделанная диаграмма более информативна чем окна с кодом, которые в экран не влазят.

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

    Ох, как сложно, но как хочется понять это всё. Напрягаемсяяяя ыыыыыыыыыыыыыыыыыыыыыыыы

  • @ИванСоблазн
    @ИванСоблазн 2 года назад

    Код на гитхаб плиз

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

    а при чем тут Unity в названии роликов ? каждый раз смотрю , надеясь что покажут наконец понятно для новичков. а тут движком и не пахнет. я вот опять нихрена с такой подачей не понял! хотя как раз для новичков это сложная для понимания вещь. показал бы куда какие скрипты накидываешь и как процесс самой организации паттерна происходит.

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

      А что тут сложного, берешь и применяешь. А если новичок, то иди учиться.

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

      Не сочти за грубость, но ты не от Романа Сакутина? Он недавно подкинул каналу подписчиков, однако мне всегда казалось, что его канал больше про хейт и хайп, чем про разработку. Если же по существу, то открой список видео на канале. Особенно пошаговый разбор создания товердефенс. Там как раз рассказывается, что и куда нужно "накидывать". А канал у Максима архиполезный.
      Немного оффтопа. Хочешь контент совсем для новичков - сходи на какой-нибудь Игрострой, посмотри на подачу и код местного автора-неадеквата. Там всё очень понятно для новичков, но проблема в том, что взрослый мужик пишет код как школьник, а любые комменты с критикой кода трет. При чем критика не вида "твой код говно", а вполне себе листинги с кодом.

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

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

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

      @@tomasgammister5776 , реально, повтори товердефенс. Я как раз в процессе. Это архи крутой материал. Придётся, конечно, параллельно ликвидировать пробелы в знаниях, но это как раз материал степ бай степ.

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

      @@tomasgammister5776 кстати, не на столько они и разные. Некоторые наоборот считают, что упор на монобихевиер это зло и самое слабое место юнити. Делают разного рода контроллеры, которые задействуют один-два монобеха в сцене, реализуя подобие ecs. Это конечно жуткий велосипед, но его использование имеет некоторые архитектурные причины. Как пример можно привести событийную модель (хоть это немного и про другое). Можно юзать юнитиэвенты, а можно и шарповые делегаты. Короче, не надо привязываться к монобеху как к единственному способу накинуть объекту логики. В том же товердефенсе фабрика реализована через скриптаблобжект, что позволяет сериализировать ссылки на объекты вне сцены (и наоборот, не даёт сохранить ссылки на объекты сцены).

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

    Спасибо.