C# Интерфейсы простым языком с примерами в Unity! Уроки по C# (ч.8)

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

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

  • @nostro92
    @nostro92 2 года назад +12

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

  • @slash7076
    @slash7076 2 года назад +24

    Эх, жаль что такой хороший канал так мало людей смотрит.

    • @МаксАрыкбаев
      @МаксАрыкбаев 2 года назад +6

      Какие люди? Ты глючишь? Тут только роботы)

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

      Время ещё придет)

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

      Соглы)

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

      Я думаю может надо видео как-то более оригинально называть?

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

      @@Hellscaner думаю тут ещё дело в частоте выпусков) Но у этого парня всё будет,но со временем, когда канал обрастёт материалом) Я был бы рад даже 2-5х минутным роликам,которые бы по нотации движка раскрывал,как и где применять функции юнити. Так как порой читаю и смотрю пример кода который сам мануал юнити дает и нифига не понятно,точнее понятно 30/70 информации,а смотришь ютубера он делает по другому,а работает так как ты представлял читая этот мануал...вообщем хочется расшифровку мануала для чайников)))

  • @deleted1219
    @deleted1219 2 месяца назад +1

    ну наконец-то хоть кто-то нормально объяснил суть интерфейса блэээээээттээттээтэтэттэтэ , спасибо тебе огромное !!!!!!!!!!!!!

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

    Канал просто жемчужина. Три дня бодался с интерфейсами, абстрактными классами и методами и именно ваш курс привел всю кашу в голове в порядок. Максимально благодарю❤

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

    КРУТОЙ РОЛИК. ДАВАЙ ЕЩЕ ПРО ИНТЕРФЕЙСЬІ!!

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

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

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

    Прикольно

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

    Уроки супер! Автор большущий молодчина!

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

    Дякую, гарний контент :) Особливо сподобалось рішення з (out IDamageable damageable)

  • @ФирдавсРахмонов-ж7ъ
    @ФирдавсРахмонов-ж7ъ 2 года назад +3

    Самое главное что ты можешь сделать чтобы у тебя была постоянная аудитория то не забрасывай канал

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

    Чел, твой контент идеальный!

  • @АлександрКузнецов-е7ъ
    @АлександрКузнецов-е7ъ 8 месяцев назад

    Молодец! Очень достойный материал для новичков. Жалко мне не подался такой контент 6-7 лет назад. Особенно правильно, что показан конкретный пример на unity.

  • @НикитаФедоров-и8н
    @НикитаФедоров-и8н 2 года назад

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

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

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

  • @ОлегЧилимов-ъ2ч
    @ОлегЧилимов-ъ2ч 2 года назад +2

    посмотрел до 5 видео, понятно стало только тут)

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

    Потрясающий канал, автор огромнейшее тебе спасибо!

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

    Хотим больше интерфейсов!

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

    Блин, видео у тебя просто топ, не верится что у канала всего 2к подписчиков, продолжай в том же духе!!!! я кста нашел тебя в гугл поиске)

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

    Чётко, спасибо! Качество звука и видео на отличном уровне и вроде бы все понятно

  • @Lemon-dh4fz
    @Lemon-dh4fz Год назад

    Лучшее объяснение. Моё почтение автору

  • @tomasgonsales483
    @tomasgonsales483 24 дня назад

    Слушай, Илья, ты наверное уже знаешь что твои уроки АХЕРЕННЫЕ ?!!!)
    Реально же, интерфейсы тема тяжеловесная, но вот именно этот урок дам мне понимание этой системы в целом.
    Спасибо! Продолжай пилить годноту! Удачи

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

    Это было хорошо . Третий видос подряд про интерфейсы и я понял их суть.

  • @ЕвгенийГречишкин-к1ж

    Спасибо, вы невероятно хорошо обьяснили. Лучший урок по интерфесам👍

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

    Шикарный канал, спасибо автору за такую качественную подачу информации!

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

    Спасибо за информацию!) Первый колокольчик который я нажал))

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

    Круто, спасибо

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

    Очень годный урок.
    Мне очень понравилось как ты объясняешь, всё очень доходчиво и понятно, а более того интересно слушать.
    + Отдельное спасибо за ссылки на статьи.
    Буду под всеми просмотреными видео писать коммент и ставить лайк.
    Очень годно!

    • @-it394
      @-it394  2 года назад

      Спасибо!

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

      @@-it394 Так же если ты сделаешь такие же уроки про паттерны, то это было бы очень интересно. Особенно то как ты рассказываешь и открой кошелек для спонсирования, таких уроков какие ты делаешь очень мало и нужно их поддерживать.

    • @-it394
      @-it394  2 года назад

      @@mikki5923 В будущем обязательно сделаю такие уроки, когда буду уверен, что смогу правильно их донести) Профессионально я к сожалению не работал, поэтому могу не видеть или не понимать некоторых вещей, так что стараюсь разбирать то в чем уверен) Ну и параллельно расту с вами естественно. Так что все впереди) А со спонсорством еще придет время когда-нибудь)

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

    Больше интерфейсов и больше рейкаста) Ждём новые уроки)

  • @АртемийКонь
    @АртемийКонь Год назад

    Шикарное объяснение

  • @ПавелЮ-р5э
    @ПавелЮ-р5э 2 года назад +2

    Больше интерфейсов ) пж

  • @bebroid7184
    @bebroid7184 11 месяцев назад

    отличный урок, благодарю

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

    Сделай видос про сериализацию, например в json, xml.

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

    Очень хороший урок! Спасибо!:)

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

    Круто

  • @BattlebornSons
    @BattlebornSons 13 дней назад

    В приведённом примере можно обойтись и без интерфейсов (так даже код будет короче), а это значит главный вопрос не раскрыт - зачем они вообще нужны? Зачем реализовывать интерфейс, если можно в каждом классе создать методы для передвижения и использовать их.

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

    Классно.

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

    Автор, будут ли еще уроки. Сделано все супер. Может будет полноценный большой курс когда-нибудь?

  • @ПавелЮ-р5э
    @ПавелЮ-р5э 2 года назад +1

    Молодец )

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

    Супер качественные у тебя ролики. Очень доступно и понятно. А можно как-нибудь ролик по делегатам и ивентам. Никак не пойму как сделать нормальную реализацию так называемого "callback", когда нужно отслеживать завершение какого-либо действия. Спасибо

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

      Готовлю как раз ролик по делегатам и ивентам) Но боюсь в рамках одного ролика рассмотреть все не получится, так что начнём с основ а там посмотрим)

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

    Давай видосы почаще, и еще, такой вопрос. Где можно найи нормальный, бесплатный курс на юнити. А то учиться по кусочкам из ютуба и гугла так себе.

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

      На самом деле я и платных то нормальных курсов не знаю, а уж бесплатных мне кажется и нет совсем( В целом можно заглянуть на канал simple code там по документации идет рассмотрение всех аспектов языка, но без примеров практических особо:(

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

    Привет! Классные ролики! А когда будут продолжение?
    На самом деле хотелось поподробнее узнать про чаректор контроллер и риджибади,а если касаться последнего,то подробнее раскрыть функции его,как задавать поворот плавный на месте, как у танков,или наоборот резки ровно на 90 градусов,как задать движение по направлению,куда смотрит объект. У меня просто с этим возникли проблемы,а на российском ютубе не та информация или итог,что показывают немного не тот какой хотелось бы получить.
    Я разворачиваю объект с помощью клавиш,он у меня риджибади,но потом когда я нажимаю клавишу движения,он двигается не в ту сторону куда смотрит. Не понимаю как сделать так,чтобы он двигался туда куда смотрит,это ведь получается нужно разворачивать объект в глобальных координатах? и интересно,как сделать выстрелы пулей,выстрелы снарядов по траектории или гарпуна с "веревкой",как подбирать обратно такие объекты(гарпун) очень жду выпусков! и желаю поскорее разобраться с делами дома и начать нас радовать роликами!)

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

      Спасибо! Продолжение будет в феврале) К сожалению зимняя сессия довольно длинная, да я ещё и короновирусом переболел, поэтому часть сессии переносится на февраль((( Так что как все сдам, так и продолжу выпускать ролики✊

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

      Кстати хорошие идеи для роликов, спасибо! Думаю обязательно что-то сделаю)

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

      @@-it394 здоровья! Не болей! И удачи на сессии! Буду тебя ругать,чтоб сдал!)
      И хитрый приём) Не пилить ролики,чтобы во время сессии больше народу ругали на хорошую оценку!))😁😉
      А так да! Было бы классно получать расшифровку документации юнити с примерами🤩🤩🤩

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

    Годно

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

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

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

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

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

    Привет, есть такой вопрос, не по теме этого видео.
    как узнать в скрипте дочернего объекта когда срабатывает OnEnable у родителя ?

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

      для какой цели это необходимо? Просто именно срабатывание OnEnable вроде ты не узнаешь напрямую, но в зависимости от того зачем это нужно можно что-нибудь придумать. Если надо выполнять допустим OnEnable в скрипте дочернего объекта после родителя (по какой-то причине этого не выполняется), то прямо в Unity можно назначить очередность выполнения скриптов

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

      @@-it394 привет, я просто хотел генерировать рандомно цвет у объекта. Объект этот всегда включен, а вот его patent.parent включается и выключается, вот когда включается надо было менять цвет.
      Я просто у объекта написал OnEnable решил проверить, и оно работало.
      Видимо когда у родителя срабатывает эта функция она срабатывает и у дочерних

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

      @@rusytop4910 Просто при деактивации родителя все дочерние объекты так же деактивируются, ну и при включении аналогично)

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

    Получается интерфейс просто говорит нам что должно быть в классе? Типа если какой то метод или свойство повторяется в нескольких классах. то мы выносим их в интерфейс. и он это как подсказка что эти штуки нужно реализовать? Правильно я понял?

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

      В целом да, если есть какое - то общее поведение у разных классов или допустим ты создаешь для класса поведение и понимаешь, что оно у тебя может использоваться в будущем еще где-то, то можно вынести это в интерфейс. Кроме того интерфейс позволяет инкапсулировать поведение, как было в примере на Unity у тебя в классе может быть прописано все что угодно, но исполняющему коду в Shooter неважно что там находиться, он работает с ним лишь на уровне IDamageable. Это минимизирует связность кода

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

      Можешь посмотреть ещё ролик кодманки на эту тему m.ruclips.net/video/MZOrGXk4XFI/видео.html

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

    3:42 в чем разница тогда между наследованием и реализацией? как это различается через синтаксис c# ? :)

    • @Hellscaner
      @Hellscaner Год назад +2

      Если простыми словами попытаться объяснить, то наследование нужно использовать если у тебя есть объекты одного типа (пример есть базовый класс "враг", и его наследники орк, эльф и тд. Каждый из них может получать урон, но ведь его могут получать и например здания, а это другой класс который тоже может наследоваться). И тогда подойдут именно интерфейсы.

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

      @@Hellscaner не это вопрос с собеседования. Ответ - разницы в контексте c# нету)

  • @РоманЕжов-щ4й
    @РоманЕжов-щ4й Год назад

    Сэ ПА Си БА!

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

    Может кто-нибудь подсказать почему у меня этот point, который следит за мышкой, активируется только тогда, когда, я навожу её на один из предметов(врага, башню или стену)? А когда убираю с них мышь, они просто там и остаются, пока я не наведу её на другой объект, тогда она будет двигаться уже в его пределах.
    Написал, вроде как всё как на видео, но работает как-то не так
    Вот код:
    using Assets;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class Shooter : MonoBehaviour
    {
    [SerializeField] private Transform targetPoint;
    private Camera cam;
    [SerializeField] private int damage;
    private void Awake()
    {
    cam = Camera.main;
    }
    private void Update()
    {
    Ray ray = cam.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    if(Physics.Raycast(ray, out hit))
    {
    targetPoint.position = hit.point;
    if (Input.GetKeyDown(KeyCode.Mouse0) &&
    hit.collider.TryGetComponent(out IDamageable damageable))
    {
    damageable.ApplyDamage(damage);
    }
    }
    }
    }

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

      И ещё, спасибо большое автору за видео, очень интересно и хорошо объяснено, хотя и не до конца пока всё понятно👍 А сколько времени ты учился, чтобы так уметь?)😅

    • @АндрейПрокофьев-е7д
      @АндрейПрокофьев-е7д 4 месяца назад

      @@bogdan9423 из за этой строки:
      targetPoint.position = hit.point;

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

    Хотел бы узнать по поводу кое какого момента, у вас в конце в методе Update вы создаёте переменные ray, hit. По сути Update это цикл и на каждой итерации цикла будут создаваться эти переменные, на сколько будет целесообразнее вынести эти переменные в момент инициализации скрипта со всеми полями или профита от этого никакого не будет?

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

      Профита почти не будет, т.к. ссылки на классы в c# удаляются не сразу.
      Хотя если у тебя лям лучей за кадр, то смысл возможно есть.

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

      Профита не будет особо. В целом не надо сильно бояться делать что-то в Update, понятное дело, что нужно стараться выносить все из него по возможности, но если нужно, что бы что-то действительно постоянно обновлялось, то просто пытаемся избавляться от тяжелых операций как например поиск по тегу или получение компонента и суем в Update

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

    наконц то я понял

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

    Единственное хорошее объяснение что такое интерфейс!👍 в остальных источниках путают причину и следствие 🤦‍♂️ таким образом интерфейс нам нужен для того, чтобы какой либо класс мог взаимодействовать с другими классами без необходимости прописывать объекты этих классов. Иначе как в данном примере нам пришлось бы прописывать каждый объект с которым взаимодействует класс shooter и если через пару тройку обновлений мы введем в игру еще какой нибудь новый класс то и его надо прописывать сюда, а если таких enemy десятки то код становится однотипным и будет целая куча объектов этого класса с одинаковыми методами. А так мы цепляем интерфейс на нужный нам класс, прописываем поведение и уже класс шутер определяет есть ли у того класса интерфейс взаимодействия и если он есть то shooter может проводить над ним установленное интерфейсом действие. При этом реализация отдана в сам класс-наследник интерфейса чтоб избежать ромба наследования и по сути определения конкретного выполнения этого действия. Так например при взаимодействии shooter и orc орк умирает с каким нибудь эффектом или словами, а при взаимодействии с wall стена должна рассыпаться молча😅, а стена у которой нет интерфейса будет стоять как стояла т.к. shooter с ней не будет никак взаимодействовать в рамках установленного интерфейса, как то так?🤔

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

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

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

    А где перегрузка?)

    • @-it394
      @-it394  2 года назад

      Ну уж с перегрузкой как-нибудь можно разобраться самим))

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

    почему в начале пишется SerializeFiled?

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

      Что бы приватные поля были видны в инспекторе

    • @-it394
      @-it394  2 года назад

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

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

    Эти выскакивающие со звуком картинки лично меня отвлекают. Да любой человек, если у него перед носом махать руками и щелкать пальцами, будет отвлекаться и потеряет понимание темы.

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

    Не совсем понял для чего это нужно, получается вы создали разные методы и это можно было сделать без интерфейсов

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

    Все бы хорошо, но в процессе объяснения темы, написания или разъяснения кода эти всплывающие, клацающие детские мемчики сбивают с толку, постоянно приходится читать что там написано, а там какая-то шляпа типо "смешная". Нужно по несколько раз пересматривать, а то и начинать искать другие видео без мемов, вставок и всех этих свистелок-перделок. Автору спасибо, но БЛИН! Подача - ужас эпилептика.

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

    Урок отстой, он походу для профессионалов

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

      Это уже 8-я часть серии уроков, так что советую посмотреть предыдущее, что бы было понятнее. Однако если вы только только начали изучать программирование, то это будет тяжело понять сразу

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

      Проффесионали и так это знают )