События (Events) в C#. Рассказываю на примерах в Unity3d, как пользоваться

Поділитися
Вставка
  • Опубліковано 12 січ 2025
  • Поддержи канал, бро!
    paypal.me/game... - мир
    boosty.to/game... - рф
    И даже криптой (пока только Ethereum):
    0x7a53325D1C36Eea7BbE8C6a8D00f2a0efd580e77
    Урок по Unity, посвященный практическим примерам использования событий (Event) в разработке игр.
    Урок по Unity3D, однако именно эта тема подойдет для всех начинающих разработчиков, программирующих на C#.
    Подписуйся на канал в телеге, или на твиттер, там я публикую коротенькие типсы и практики, которые помогут писать код лучше, понятнее и эффективнее:
    Telegram: t.me/gamedevlavka
    Twitter: / gamedevlavka

КОМЕНТАРІ • 56

  • @YasnaKo
    @YasnaKo 3 роки тому +3

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

  • @vladvladoss4036
    @vladvladoss4036 3 роки тому +4

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

  • @catnexu
    @catnexu 3 роки тому +4

    Спустя 3 месяца изучения юнити начал постепенно перекатываться на ECS, но вот всё никак не мог понять события, даже этот ролик третий раз смотрю (сейчас уже для закрепления). И виной всему использование слова "подписка", которое воспринимается, из-за соцсетей, как что-то сложное и облачное, хотя по факту это просто присоединение метода класса к делегату другого класса. А этот другой класс запускает этот делегат внутри своего какого-то метода (или дистанционно). Юнитеки, походу, это поняли, и потому в своих юнитиэвентах используют понятие listener, а не subscriber. В любом случае, благодарю за видео, наконец-то до меня дошло

  • @Pravda-bw3tj
    @Pravda-bw3tj 3 роки тому +1

    приставочка Event в конце по какой нотации было?

  • @PS-vj6jz
    @PS-vj6jz 3 роки тому +17

    Так. А ты добавь рубрику о том, где будешь переписывать свой "говнокод". Чтобы те, кто менее знаком с шарпом, хотя бы что-то понимали по тематике видео. А те, кто знают поболее - понимают, видели хорошие практики написания кода. И так же их можешь в превьюшке отмечать цветом заставки, иконкой, ярлыком или еще как. Будет удобно и новичкам и чуть более опытным, чем новичок.

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

      Это будет немного ненужная рубрика, перепись говнокода называется рефакторингом, автор просто показывает и рассказывает про события, это бессмысленно снимать видео о том, как рефакторить код из урока.
      Рефакторинг интересная тема, можешь почитать книгу Мартина Фаулера по, рефакторингу

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

    • @Tera-h7e
      @Tera-h7e Місяць тому

      ​​@@artemzaitsev7286у него канал про "обучение", он уже должен придерживаться всех принципов и тд написания кода для обучения. Да и я молчу, что у него нет должного образования для того, чтобы кого-то учить. Человек занимается ютубом, а программирование - его хобби. Автор не разбирается не о методиках написания кода, не о том, как это функционирует под капотом, да и вообще уровень его знаний - это пару пройденных курсов за пару дней. Отталкиваюсь о полученном материале с его видео, сижу здесь просто так, чтобы поржать

  • @sanded9321
    @sanded9321 3 роки тому +8

    При всем уважении к автору и его труду, ну реально про события 2мин в начале 4:41 (создание) и 3 мин в конце 17:30 (подписывание), все остальное время пытаешься понять что же происходит неужели эта вся система для событий нужна ... и такой неее ну на хер )) ни про подписывание ни про отписывание ни слова ... где....когда ... как.. почему ... Ну ничего ... Тяжело в учение легко в бою как говориться )))В любом случае 👍 за труды.

    • @ravenempty3562
      @ravenempty3562 9 місяців тому

      не в обиду автору, у него много полезного на канале, но тут да, соглашусь)

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

  • @dannynew8065
    @dannynew8065 3 роки тому +1

    Блин кайф спасибо)))

  • @ASFlasher
    @ASFlasher 3 роки тому +9

    Конечно, чем делать такие примеры в вакууме и говорить неделайте так никогда, лучше было бы на примере простенькой игры показать несколько парадигм, но так как надо, в стиле бест практисис.

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

  • @mrgoodpeople
    @mrgoodpeople 10 місяців тому

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

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

  • @Andredy89
    @Andredy89 3 роки тому +1

    у тебя "народный" RIder или лиц?

    • @gamedevlavka
      @gamedevlavka  3 роки тому

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

  • @jagerkat
    @jagerkat 3 роки тому +1

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

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

      Да, каждый подписчики должен знать на кого подписывается. Но это связь односторонняя. Подписчики имеют ссылку, а тот на кого подписываются не знает, кто на него подписан. В этом весь смысл ивентов.

    • @YasnaKo
      @YasnaKo 3 роки тому

      Есть вариант связывания через ScriptableObject Event

    • @Tera-h7e
      @Tera-h7e Місяць тому

      Боже упаси обучаться на ютубе программированию, не слушай его, неееет, пожалуйста, неееет

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

    а нужно ли отписываться от событий?

    • @gamedevlavka
      @gamedevlavka  3 роки тому +1

      Обязательно! Скажу так: это в некоторых случаях не требуется, но лучше отписаться, чем не отписаться. Т.к. подписчики может быть в какой-то момент быть уничтожен, и тот кто посылает уведомление будет ссылаться на Null, и вылетит ошибка. Будешь гадать, что произошло.
      А если будешь всегда отписываться, такой проблемы никогда не будет.

    • @nikita8291
      @nikita8291 3 роки тому +1

      @@gamedevlavka может быть я ошибаюсь, но вроде же сборщик мусора как раз не удаляет объекты, на которые есть активная ссылка (он их вроде в принципе не видит). то есть если не отписаться, они останутся висеть в памяти, вызывая утечку памяти

    • @gamedevlavka
      @gamedevlavka  3 роки тому +1

      @@nikita8291 про утечку памяти и про сборщик все верно! Я имел ввиду объект может быть уничтожен (игровой), а ссылка на него (скрипт на нем), останется и она будет теперь ссылаться на null

    • @nikita8291
      @nikita8291 3 роки тому +1

      @@gamedevlavka понятно, спасибо)

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

    Зачем рассматривать эвенты без времени?
    Это все можно сделать и по другому без делегатов и без эвентов.
    Эвент ведь нужен для однократного выполнения запроса в строке где он будет вызван, а не в той строке откуда отправлен.
    типа чтобы не было случая когда у тебя произошло 10 вызовов функции в одной части когда которые должны передавать информацию в ту часть кода где произошел только один цикл.
    Типа событие это какой то запрос до момента прочтения, и сколько раз бы ты его не вызвал он примется 1 раз и будет обнулëн.
    вот к примеру, какая разница какому то коду, произошло событие десять раз или один? как мы это потом определим?

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

    • @slimeball3209
      @slimeball3209 Місяць тому

      @Tera-h7e уже знаю, по сути можно было обойтись обьяснением ссылки на функцию (делегат) как в js, если для новичков. а конкретно эвент это просто ограничения поверх этой ссылки.
      а после того как я понял что это ссылка на функцию я и сам пойму зачем он нужен, это можно оставить на конец.

    • @Tera-h7e
      @Tera-h7e Місяць тому

      @@slimeball3209 да, ключевое слово евент - это ограничение над делегатом, для правильного вызова без возможности ошибиться, что и делает его евентом

    • @slimeball3209
      @slimeball3209 Місяць тому

      @@Tera-h7e но не делает "событием", т.к. подписчики есть уже у делегата, хотя делегат должен был быть ссылкой на функцию а не массивом функций. (как в js) звучало бы логичнее.
      ну то есть я к тому что было бы логичнее если бы делегат принимал одну функцию, а эвент имел системму подписок, а так, получается произвольно названные термины

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

  • @zikrullohtolibjonov3710
    @zikrullohtolibjonov3710 3 роки тому

    Привет. Спасибо за курс. Он очень хороший даже супер. А можно проект на гитхаб залить. Многих людей будет удобно по тыкать, изучать что как

    • @zikrullohtolibjonov3710
      @zikrullohtolibjonov3710 3 роки тому

      Проста там видел папки для каждого урока и думал о будет на что по тыкать но не нашёл.

  • @АндрейПрокофьев-е7д

    В какой момент в данном случае нужно отписываться от события?

    • @Tera-h7e
      @Tera-h7e Місяць тому

      Когда объект отключается либо удаляется, то есть тогда, когда он тебе больше не нужен

  • @АлександрБычко-п9ъ
    @АлександрБычко-п9ъ 3 роки тому +1

    Надо было еще хоть пару слов про делегаты рассказать.

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

    блин даже ide показывает что эти this лишние

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

      var тоже лишние) смотрю на это и думаю, что я идиот, чего то не понимаю) но на деле - это лишь стиль кода автора ролика)

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

  • @hugoboss3741
    @hugoboss3741 Рік тому +1

    Всё что нужно знать про события,, делегаты и действия сказано не было. 99% ролика построение глупой модели чтобы вывести 3 сообщения. Печалька.

    • @Tera-h7e
      @Tera-h7e Місяць тому

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

  • @Pravda-bw3tj
    @Pravda-bw3tj 3 роки тому +5

    Человек пишет про чистый код, Поля публичные с маленькой, сразу видео закрыл.

    • @gamedevlavka
      @gamedevlavka  3 роки тому

      Microsoft рекомендует использовать PascalCase для публичных полей - это верно. И для .NET это справедливо. Но мы работаем в Unity, где внутренние библиотеки по тем или иным причинам написаны с camelCase для публичных полей и свойств. Мне неизвестно причины такого решения, но я решил, что мой код внутри проектов Unity будет придерживаться тех же правил, что и сами разработчики Unity

    • @Pravda-bw3tj
      @Pravda-bw3tj 3 роки тому +2

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

    • @1pampers13aby7
      @1pampers13aby7 3 роки тому +19

      @@Pravda-bw3tj, как будто рома сакутин с левого аккаунта написал)

    • @Tera-h7e
      @Tera-h7e Місяць тому

      ​@@Pravda-bw3tjЗабей, ты школьникам не объяснишь, они слизывают с нейронки понятия не имея, для чего вообще это придумано, тем самым портя репутацию юнити

  • @TwilightGamerChronicles
    @TwilightGamerChronicles Рік тому +1

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

    • @Tera-h7e
      @Tera-h7e Місяць тому +1

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

  • @Tera-h7e
    @Tera-h7e Місяць тому

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