Продвинутый C# в Unity. Паттерн Visitor [Посетитель]

Поділитися
Вставка
  • Опубліковано 25 лип 2024
  • Шаблон проектирования «‎Посетитель» в реальном проекте на Unity за 5 минут!
    Салют, ты на канале Night Train Code 😎
    • 🖤 GitHub: github.com/MeeXaSiK
    • 🖤 VK: nighttraincode
    • 🖤 Telegram: t.me/nighttraincode
    • 🖤 Instagram: / the.meps_
    • Таймлайн:
    00:00 ► Вступление
    00:21 ► Для чего нужен Паттерн Visitor (Посетитель)?
    01:13 ► Наглядная теория
    01:28 ► Интерфейс Visitor для всех типов оружий
    01:48 ► Немного про Overlap
    02:06 ► Реализация интерфейса Visitor
    03:23 ► Вызов метода Visit через Accept
    05:08 ► Ещё один плюс паттерна «‎Посетитель»
    Поддержка канала:
    www.donationalerts.com/r/nigh...

КОМЕНТАРІ • 56

  • @Tarpopo
    @Tarpopo 2 роки тому +2

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

  • @alicewithalex
    @alicewithalex 2 роки тому +1

    Круто, спасибо большое, продолжай снимать ролики в том же духе)

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      На здоровье, договорились)

  • @ThePirateHistory
    @ThePirateHistory 2 роки тому +1

    Отлично, малесь быстро, но мне кажется из-за этого я и понял больше, и интереса стало больше)

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Спасибо)
      Повторюсь, быстро там, где код, не совсем (или никак не) относящийся к теме, но может быть интересен людям, видимо интерес есть 😄🔥

  • @alexsklyarov6792
    @alexsklyarov6792 2 роки тому +4

    Привет, спасибо за туториал. Сними ролик про UniTask, вижу ты его используешь в проекте)))

  • @user-ct3pn9ib6f
    @user-ct3pn9ib6f 2 роки тому

    Ой как хорошо, спасибо за видео

  • @user-we6si4mi3x
    @user-we6si4mi3x 2 роки тому +1

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

  • @piijjen
    @piijjen 2 роки тому +3

    Ничего не понял, но очень интересно.

  • @A3azel
    @A3azel 4 місяці тому +2

    Делать хитбокс визитером не очень в плане открытости/закрытости. Лучше сделать оружия визитерами, тогда для добавления нового оружия нужно будет создать 1 реализацию визитера и все. Собственно визитер и нужен для удобного добавления операции над существующей иерархией классов (хибоксов).

  • @entity5148
    @entity5148 2 роки тому +1

    Спасибки!)

  • @psy_gamer
    @psy_gamer 2 роки тому +7

    Очень интересная реализация паттерна!)
    А будет ли разбор паттерна "состояние" для ИИ?

    • @NightTrainCode
      @NightTrainCode  2 роки тому +4

      Привет, благодарю)
      Думаю, да, будет 😎

    • @MrGreenwud
      @MrGreenwud 2 роки тому +1

      Я тоже жду уроки про другие патерны

  • @user-sg2dh8rt4l
    @user-sg2dh8rt4l 2 роки тому

    Давай про паттерн абстрактная фабрика

  • @user-xz5ce7jp8f
    @user-xz5ce7jp8f 2 роки тому +3

    Хорошо объясняешь , а главное еще и правильно. Нету до чего прицепиться. Хотел поругать за использование тегов, но не получилось 😂

    • @NightTrainCode
      @NightTrainCode  2 роки тому +2

      Спасибо! Ахвххаха, да, всё продумано 🤣

  • @SMT-ks8yp
    @SMT-ks8yp 2 роки тому +2

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

  • @d3dx259
    @d3dx259 2 роки тому +1

    Привет, на отрывке 4:28 метод PerformAttack имеет параметр override, но он ,вроде бы, применяется только к abstract или virtual. Можно небольшое объяснение как это работает?

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      Привет, это переопределение методов. Полиморфизм подтипов. Можешь это погуглить)

    • @d3dx259
      @d3dx259 2 роки тому

      @@NightTrainCode а ок, спасибо

  • @gameviewer5693
    @gameviewer5693 2 роки тому

    Спаcибо за видео, а можно узнать про класс Unit, он в себе содержит только ссылки на компоненты и другие классы обращаются к ним через Unit? И так как доступны 2 класса UnitHealth и UnitDamageable, то можно менять значение в UnitHealth на прямую, игнорирую UnitDamageable получается

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      На здоровье
      Да, только содержит ссылки на компоненты. А все компоненты содержат ссылку на этот класс Unit, чтобы можно было удобно друг к другу обращаться
      Можно менять значение только в UnitHealth, но это нелогично
      Через UnitDamageable можно наносить урон (метод ApplyDamage), а если необходимо вылечить юнита, то нужно сделать отдельный метод, например, просто Heal

    • @gameviewer5693
      @gameviewer5693 2 роки тому

      @@NightTrainCode спасибо. А касательно методов Default Visitor, там аргументом передается оружие, а параметром принимается WeaponAttack, не подскажешь какая там иерархия наследования? Странно что оружие и атака оружия наследуются друг от друга, учитывая разделение ответственности на том же юните. Хотя возможно именно с оружием это имеет смысл, но все же наверное назову IWeapon или просто Weapon тогда

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      @@gameviewer5693 DefaultRaycastVisit спасает от дублирования кода
      У оружия есть основной Weapon, как у Unit
      В классе Weapon есть ссылки на все компоненты, например:
      WeaponAttack
      WeaponAudio
      WeaponAnimator
      WeaponAmmunition
      И т.д., и т.д.
      WeaponAttack для каждого оружия свой, так как поведение у них разное. А так, можно и просто Weapon основной передавать, а не WeaponAttack

  • @gamingpro3324
    @gamingpro3324 2 роки тому

    здраствуйте, снимите видео как уменшить трис ивертс, из за этого игра лагает

  • @lewaplay
    @lewaplay 2 роки тому

    тутор крутой но где ссылка на репу?))

  • @leyn7229
    @leyn7229 2 роки тому

    Привет, когда видео про вкладку Lighting?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Салют, вряд-ли в скором времени, пока другие темы

    • @leyn7229
      @leyn7229 2 роки тому

      @@NightTrainCode очень нужно просто :(

  • @VitVit312
    @VitVit312 2 роки тому +3

    Каеф, но моменты с кодом иногда очень быстрые, не успеваешь сообразить что тебе что то поясняют
    Отрывки из кода на столько быстро пролетают что даже не понятно что ты там хотел показать, приходится ставить на паузу постоянно
    Не спеши, ты нам ещё живой нужен с:

    • @NightTrainCode
      @NightTrainCode  2 роки тому

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

    • @grimseal
      @grimseal 2 роки тому +3

      Весь ютуб смотришь на х2, и только найт трейн на x0.5 :-D

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@grimseal 👻🤡

  • @evilvirraZzz
    @evilvirraZzz 2 роки тому +1

    Посмотрел гитхаб, увидел что местоположение - Красноярск, так ли это на самом деле?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Да, всё верно, а что смущает?
      Земляк?)

    • @evilvirraZzz
      @evilvirraZzz 2 роки тому +1

      @@NightTrainCode Да)

    • @NightTrainCode
      @NightTrainCode  2 роки тому +1

      ​@@evilvirraZzz Левый берег на связи 🤙

  • @user-es7ld6vs1f
    @user-es7ld6vs1f 2 роки тому

    Подскажи пожалуйста где вообще можно взять библиотеку Юнити ?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Чего?)

    • @user-es7ld6vs1f
      @user-es7ld6vs1f 2 роки тому

      @@NightTrainCode я просто пока в этом профан , имею ввиду где узнать как и что выполняет та или иная функция , класс , переменная ?

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      @@user-es7ld6vs1f Что касается кода - справка Microsoft про C# + видео на ютабе
      Что касается библиотеки Unity, которая идёт вместе с движком - документация на сайте Unity + тоже видосы на ютабе

    • @user-es7ld6vs1f
      @user-es7ld6vs1f 2 роки тому

      @@NightTrainCode теперь осталось выучить английский, ладно спасибо и удачи )

    • @vladislavkresov2910
      @vladislavkresov2910 2 роки тому

      @@user-es7ld6vs1f В документации Unity есть даже туториалы

  • @moranyt8299
    @moranyt8299 2 роки тому

    А вы еще вернетесь?((( Я прост новенький, в танке так сказать, мб есть причина того что 7 мес без роликов.

    • @NightTrainCode
      @NightTrainCode  2 роки тому

      Привет, в телеграме у меня почаще посты выходят)
      Новый ролик уже на днях после такого долгого перерыва 🥳

    • @moranyt8299
      @moranyt8299 2 роки тому

      @@NightTrainCode ебоооииии

  • @nuciesto6917
    @nuciesto6917 2 роки тому

    0:18 дробовик автомат)
    P.S. Это не дробовик(

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

    Ничерта не понял, видимо рано залез сюда