Как сделать управление в Unity используя интерфейсы?

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

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

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

    Спасибо за видео. Будем ждать следующие! И стримы. По резиденту. Там дополнение вышло как раз.

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

    Насчёт интерфейса: за ним не получится или точнее это будет плохим вариантом, пытаться за ним прятать контроллер управления птицей или машиной. Так как это будет нарушением принципа подстановки Барбары Лисков. То есть, класс, использующий базовый класс, не должен знать о наследниках. Если расшифровать, то суть в том, что производные классы, должны полностью соответствовать контракту без всяких там заглушек. То есть управляя контроллером, подразумевающим прыжок, при его вызове должен произойти прыжок. Тут скорее нужно будет выделять интерфейс взаимодействия не с игровым персонажем, а с транспортом.

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

      Согласен, лучший вариант - раздробить контролируемые объекты на IMovable, IJumpable и т.д. и в инпуте передавать команды в соответствующие интерфейсы, если они существуют. Спасибо за поправку.

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

    Спасибо за урок :)

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

    Благодарю за труды. Люблю смотреть ваши видео.
    Хотелось бы добавить, что для новичков вся эта S.O.L.I.D тема довольно сложная. По этому было бы неплохо добавлять чуть больше примеров. К примеру, если бы в этом видео вы продемонстрировали ту самую подстановку управления, я более чем уверен что большинство новичков прозрело) Хотя возможно оно и не надо)
    Мой небольшой опыт менторинга показал, что на синтетических или маленьких примерах новичок быстро забывает суть. Объясняешь ученику как работают делегаты и события, и для чего они нужны/какую проблему решают. Ученик все понял. Но из за недостаточного кол-ва примеров, и опыта использования все же через неделю забывает как этим пользоваться ХD
    То же отснял 3 месяца назад урок о том как с помощью интерфейсов по типу IOpenable IInteractable открывать ящики, двери, сундуки, чемоданы, окна, витрины и все что может открыться. Но к сожалению у военкомата были на меня свои проблемы поэтому свой блог пришлось на время заморозить.
    😁 Но да это все не важно. Продолжайте в том же духе🔥 Годный контент, всем советую. ❤️

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

      Полностью солидарен насчёт SOLID, стоит уплмянать такие вещи прямо в видео)
      А насчёт подмены - это будет в видео про новую инпут систему, там и покажу, как легко подменяется)
      Спасибо за столь развёрнутый комментарий)

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

    это потрясающе братан, жду новых уроков) недавно наткнулся на твой канал и просто кайфую с твоего качественного кода и объяснений. а качество контента такое, словно ты миллионник) впрочем, продолжая в таком духе, все так и будет

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

    Замечательный пример применения интерфейсов! 👍

  • @raimanchannel3376
    @raimanchannel3376 2 года назад +10

    Побольше примеров с интерфейсами если не сложно

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

      Да было бы не плохо если бы он показал реализацию разного поведения персов, типа полет, езда, ходьба

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

    Очень круто! Спасибо.

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

    По поводу птицы и прыжка- оставлять метод пустым при имплементации интерфейса или переопределения абстрактного метода класса - нарушение принципа солид Барбары Л. Данная проблема решается путем применения паттерна стратегия.

  • @ВасилийМигулин-т1й
    @ВасилийМигулин-т1й 2 года назад +3

    Отличный урок, спасибо! Но когда декоратор?)

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

    Отличный урок))

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

    Спасибо!

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

    Все ясно, Вилла у моря у него)

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

      Это длинная история о том, что мне надоело имя Vasya))

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

      @@gamedevlavka Можно было взять Vasilevs

  • @PS-vj6jz
    @PS-vj6jz 2 года назад +1

    Окей, ждём видео про Input system. Единственное, что я не предполагал, что скрипт с InputController, может лежать на Игроке, всегда думал, что это некий менеджер, к которому скрипт игрока получает доступ.

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

      Удобнее командовать контроллируемым объектом, чем из объекта подписываться на инпут. Так, ты легко можешь воткнуть ИИ, который управляет объектом, или наоборот, дать управление игроку

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

    Спасибо за видео маленько разобрался, но всё же некоторые моменты остались не понятными. Если в игре надо реализовать разных персонажей которые также ходят и прыгают, но с небольшими какими-то нововведениями это надо для каждого объекта создавать новый скрипт с реализацией тех же интерфейсов? Если делать так то мы копируем постоянно код один и тот же. Можно этого как-то избежать или это неотъемлемая часть реализации таким способом, или я что-то не правильно понял?

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

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

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

    а если этот CharacterInputController вынести на empty object в сцену? он же будет брать и передавать input значения пешке? верно?

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

      а что если пешек на сцене несколько? (пешки по аналогии с pawn из анриала, я привык) то надо реализовывать менеджер IsUnderControl? который будет держать все пешки в виду и писать логику передачи управления с условием (только один за раз) ? right?) я просто в интерфейсках полный ноль и почему то мне эта тема очень сложно даётся.

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

    Все дуже круто, але можна будь ласка, щоб ти показав створення гри від початку до кінця (RPG по можливості), де ти вирішуєш проблеми "на ходу"(зразу) .
    P.s. Дякую що прочитав

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

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

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

      @@gamedevlavka Будемо чекати)

  • @Malloriak
    @Malloriak 10 месяцев назад

    Добрый день. А кто ловит исключение в Awake?

  • @MoronicSoul
    @MoronicSoul 6 месяцев назад

    Всё круто, но одно не понятно, а для чего вообще компонент CharacterController, что он делает, за что отвечают его параметры? ))

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

    Как говорил кто то из великих, думайте об интерфейсах, а не о реализации.

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

    А как к этой системе добавить возможность управления через UI кнопки?

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

    Приветствую! У меня по какой-то причине в "throw new Exception", сам " Exception" не находит тип или имя в пространстве имён... Делал всё по твоему коду. В чём может быть проблема?

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

    Привет, можешь пожалуйста затронуть тему архитектуры UI? очень интересно было бы послушать.

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

      Обязательно! Уже пришёл к инетесному решению, которое и удобно и функционально. Нужно протестировать хорошо и потом расскажу

  • @handless_juggler
    @handless_juggler 10 месяцев назад

    Я правильно понял, что если в проекте управлятся будет только персонаж то смысла от такой реализации нет?

  • @КириллТарачов-щ1б

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

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

    Привет спасибо за видео, но тема кажется пока не раскрытой, думаю кто-то не заметит особых изменений, ибо убрав интерфейсы все будет работать так же, возможно дальше будет больше примеров и раскрытия преимуществ. Понятно что видео не об этом, но зачем использовать GameManager/Controller под названием Character, почему не сделать CharacterMovement(у которого тоже можно cделать интерфейс IMovable) отдельный класс и другую логику которая возможно и дальше будет запихиваться в этот класс тоже отделить. Тот же Input вынесен в отдельный класс. И еще такой момент почему Input должен управлять передвижением и всеми другими логиками связанными с инпутом, а не другие классы, кому нужна информация о вводе, должны иметь ссылку на Input и отслеживать был ли произведен нужный им ввод?

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

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

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

    Привет, давай про addresables)

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

      Я в них не до конца разобрался, так что это позднее)