#7 Интерфейсы понятным языком в Unity C#

แชร์
ฝัง
  • เผยแพร่เมื่อ 1 มิ.ย. 2024
  • Интерфейсы в Unity C# это то, что может сильно ускорить разработку вашей игры, особенно важно их понимать если вы собираетесь работать с UI, потому что стандартный UI Unity работает с интерфейсами.
    ➡Telegram: t.me/game_director
    Группа MYINDIE в ВК: myindieru
    Таймкоды:
    00:00 Введение
    02:01 Создаем Interface
    06:07 Работаем с Interface
    07:53 Вам это все нужно

ความคิดเห็น • 30

  • @Blossantrape
    @Blossantrape 9 หลายเดือนก่อน +5

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

  • @kawaikaino5277
    @kawaikaino5277 11 หลายเดือนก่อน +4

    Почему я не нашел этот канал раньше, вместо Гошей Дударей и т.п

  • @jayrome9946
    @jayrome9946 หลายเดือนก่อน

    какое же простое и от этого, крутое объяснение!!! Ты лучший преподаватель! Спасибо за урок! жаль что так мало уроков. Директор Михаил можно пожалуйста, generic class, паттерны, пул объектов. Надеюсь в будущем у тебя появится платный курс (много денег нет) и закрытый дискорд для учеников, где ты будешь передавать все знания по наследству таким как я! 🙃

  • @r2d2-vw9wc
    @r2d2-vw9wc 3 หลายเดือนก่อน +2

    Спасибо

  • @Veles017
    @Veles017 2 หลายเดือนก่อน

    Отличный урок! Спасибо большое!

  •  11 หลายเดือนก่อน +1

    Я бы ещё посоветовал сейчас (если ты новичок и не шаришь) попросить у GPT написать логику интерфейса и попробовать засунуть в передаваемое значение, допустим - currentPlayerHealth; и понять как оно связано.
    Пару манимуляций и всё станет понятно

  • @user-mm7ch3xw4e
    @user-mm7ch3xw4e 11 หลายเดือนก่อน +1

    Спасибо за очередное полезное видео!) Хотя и так знаю про интерфейсы. Сейчас грызу addressable....... Вообще, такое ощущение, что документации пишут для того, чтобы отбить у людей желание заниматься чем-либо. Вот без видосов, изучая чисто документацию Unity, я бы уже бросил это дело)

    • @GameDirectorMichael
      @GameDirectorMichael  11 หลายเดือนก่อน +1

      Адресаблес Крутая штука, удачи) с обучением)

    • @squitani
      @squitani 4 หลายเดือนก่อน

      понял, как юзать?

    • @user-mm7ch3xw4e
      @user-mm7ch3xw4e 4 หลายเดือนก่อน

      @@squitani частично да

    • @squitani
      @squitani 4 หลายเดือนก่อน

      @@user-mm7ch3xw4e как переключать сцену с помощью addressables , знаешь?

  • @STIGRADOR
    @STIGRADOR 6 หลายเดือนก่อน

    Хм... А если этому классу не нужен этот метод - то его можно оставлять пустым? Крутяк! Так в принципе я могу зафигачить все в один интерфейс и не реализовывать ненужные мне методы! Прикольно! Спасибо за хелп!

    • @GameDirectorMichael
      @GameDirectorMichael  6 หลายเดือนก่อน

      Да то есть он обязательно должен быть в классе но может быть абсолютно пустым

  • @gaymdev6144
    @gaymdev6144 10 หลายเดือนก่อน

    Гайс, делать игру без интерфейсов = СМЕРД. Они ОЧЕНЬ приятные+полезные, хз как без них жить (с костылями ходить).
    Смотри, в моем хороре есть электрические устройства. Лампы, радио, телевизоры и прочие штуки.
    У каждого электрического устройства есть своя логики работы, лампам нужно отключить свет и отключить материал лампочки, радио включает аудиоКлип и шейдер для постветки работы.
    То есть, у каждого такого электрического устройство есть свой собственный скрипт (так как у них разная логика включения и выключения).
    Я хочу, чтобы мой призрак активировал все возможные электрические устройства, когда проходил мимо них.
    Без интерфейсов и наследования это делается крайне печальным образом, типа:
    GetComponent().UseTV();
    GetComponent().UseRadio();
    GetComponent().UseLight();
    То есть, в скрипте монстра или игрока или любой другой штуки мне необходимо прописывать код выше, верно? А если я решу добавить еще одно электрическое устройство, то мне придется добавлять еще одну строчку в каждый скрипт, который хочет использовать электрическое устройства. А если у меня 20 устройств? Придется заниматься дрочиловом, а оно крайне демотивирует.
    А вот теперь смотри как эта задача решается с помощью интерфейса.
    0. Создаем интерфейс с 1 строчкой кода "void Interact();"
    1. Наше электрическое устройство (например радио) наследуется от интерфейса "IElectroItemUse" и реализует метод интерфейса вот так
    public void Interact()
    {
    UseRadio();
    }
    Скрипт телевизора же будет реализовывать интерфейс слегка по другому
    public void Interact()
    {
    UseTV();
    }
    3. Теперь игрок, монстр и кто-угодно может выполнить метод активации электрического устройства через строку
    gameObject.GetComponent().Interact();
    private void OnTriggerEnter(Collider other)
    {


    if (other.CompareTag("Electro"))
    {
    other.GetComponent().Interact();
    }
    }
    А вот таким образом призрак ходит по дому и если он цепляет коллайдером какое-либо устройство, то оно активируется.
    Интерфейс это крайне простой способ для ЛЮБЫХ скриптов получить доступ сразу к ТЫСЯЧИ или сотне скриптов, что реализуют интерфейс.

    • @GameDirectorMichael
      @GameDirectorMichael  10 หลายเดือนก่อน

      Все так и есть

    • @jayrome9946
      @jayrome9946 8 วันที่ผ่านมา

      ну так можно же без интерфейса обратиться и без всяких лишних проверок
      за место этого и интерфейса. так вообще хз кто обращается к каждому TV, Radio и прочее...разве прям вообще новички
      GetComponent().UseTV();
      GetComponent().UseRadio();
      GetComponent().UseLight();
      когда можно вот так
      if(other.CompareTag("Interactive"))
      other.GetComponent().Use();
      без лишних созданий интерфейсов и массивов, которые лишний раз нагружают работу. ещё и быстрее будет...

  • @STIGRADOR
    @STIGRADOR 6 หลายเดือนก่อน

    Черт.... А у меня не пашет:( у меня есть класс, который не находится на сцене и поиск по сцене не находит его :( Хотя метод FindObjectsOfType перебирает все мои объекты на сцене, которых может быть целая туча и все равно не находит класс, реализующий интерфейс, лежащий в корне проекта:(((( в чем может быть проблема? Да и вообще, Майкрософт (создатели С#) косячеры. Не продумали множественное наследование. Приходится теперь каким-то интерфейсом пользоваться.... Еще и поля туда воткнуть нельзя блин... О. Прикольно, а свойства можно...

    • @GameDirectorMichael
      @GameDirectorMichael  6 หลายเดือนก่อน

      Вообще лучше не пользоваться Fiind objects of of Type, если у тебя целая туча объектов, в таком случае можно по имени искать если ссылку по какой-то причине по-другому не сделать. И ты написал что у тебя есть класс который не находится на сцене и поиск по сцене не находит его, тут всё логично если классно нет на сцене он его и не найдёт.

  • @xVitOSx
    @xVitOSx 9 หลายเดือนก่อน

    всё равно ничего не понятно...
    в чём смысл интерфейсов? я просто не понимаю, что они дают

    • @GameDirectorMichael
      @GameDirectorMichael  8 หลายเดือนก่อน

      Доступ к методу не через класс, а через интерфейс. Это упрощает работу с разными классами, то есть в 2 классах разных может быть 1 интерфейс.

    • @TheHellguitarplayer
      @TheHellguitarplayer 8 หลายเดือนก่อน

      например: У тебя есть интерфейс IWeapon, его реализуют классы Pistol, Rifle, Shotgun. Теперь ты в своем плеере определяешь в классе пользователя поле IWeapon currentWeapon и передаешь туда просто твое оружие из списка. Это разрывает жесткую зависимость и делает код расширяемым, если ты захочешь в дальнейшем добавить еще какое-нибудь оружие - тебе нужно будет просто добавить оружие и реализовать в нем интерфейс IWeapon и оно будет работать без дополнительных танцев с бубном.

  • @dmitriypermyakov5402
    @dmitriypermyakov5402 11 หลายเดือนก่อน

    В головном уборе в помещении могут находится или женщины или священнослужители или мусульмане. Хто ты, маска? 🤔

    • @GameDirectorMichael
      @GameDirectorMichael  11 หลายเดือนก่อน

      Это кто сказал?

    • @dmitriypermyakov5402
      @dmitriypermyakov5402 11 หลายเดือนก่อน

      @@GameDirectorMichael все знают, кто не жил в дупле дерева - "Почему существует запрет на ношение шапки в помещении?"

    • @jojofag793
      @jojofag793 11 หลายเดือนก่อน

      Вы зашли сюда чтобы получить полезную информацию или чтобы обвинять человека, который ее преподает в "неподобающем" внешнем виде?
      Лично мне все равно как и во что одет человек, вам бы посоветовал тоже перестать обращать на это внимание. И не надо, пожалуйста, пытаться аргументировать против тезисами по типу "все знают, кто не жил в дупле дерева": если вам нечего сказать что-то более внятное, чем "так принято", то и не стоило оставлять свое очень "важное" замечание.

    • @dmitriypermyakov5402
      @dmitriypermyakov5402 11 หลายเดือนก่อน

      @@jojofag793 так ведь и я полезную информацию озвучил. Стыдно, дожить до бороды и не знать элементарных вещей.

    • @JustPlayingBroGD
      @JustPlayingBroGD 11 หลายเดือนก่อน

      @dmitriypermyakov5402 Ну вот зачем это все? На такие каналы обычно приходят люди, которым интересно узнавать новое, учиться... автор душу вкладывает в свое творчество, делится своим опытом...
      Можно ведь и так сказать: "Глупые комменты могут оставлять или глупцы, или ущербы, жаждущие самоутвердиться за счет опускания других, или обделенный вниманием человек, готовый на все, лишь бы кто-то его заметил. Кто ты, Дмитрий Пермяков?".
      По поводу головного убора. За исключением некоторых специфических сообществ, наличие/отсутствие головного убора не является обязательным. Если кто-то привык к другому - пожалуйста, но вовсе нет необходимости в том, чтобы проецировать свои комплексы на других людей, пытаясь "скорректировать" их поведение примитивными манипуляциями, вроде той, что пытается вменить чувство вины. Это как-то низко...
      Далее. Чел у себя дома (на своей территории, не на твоей) находится и имеет полное право хоть кастрюлю на голову одеть. Его право и его дело.
      Кепка вполне себе вписывается в обстановку и дизайн окружения, который, кстати, продуман и стилизован.
      Ну и еще, хочешь умничать - с пунктуацией подружись, а то запятые куда-то потерял 🤔