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

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

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

  • @YasnaKo
    @YasnaKo 3 года назад +3

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

  • @CiTRyS32
    @CiTRyS32 3 года назад +4

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

  • @vladvladoss4036
    @vladvladoss4036 3 года назад +4

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

  • @Pravda-bw3tj
    @Pravda-bw3tj 3 года назад +1

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

  • @ASFlasher
    @ASFlasher 3 года назад +9

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

  • @mrgoodpeople
    @mrgoodpeople 9 месяцев назад

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

  • @Andredy89
    @Andredy89 3 года назад +1

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

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

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

  • @sanded9321
    @sanded9321 3 года назад +8

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

    • @ravenempty3562
      @ravenempty3562 9 месяцев назад

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

  • @jagerkat
    @jagerkat 3 года назад +1

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

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

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

    • @YasnaKo
      @YasnaKo 3 года назад

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

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

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

    • @Tera-h7e
      @Tera-h7e 20 дней назад

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

    • @slimeball3209
      @slimeball3209 20 дней назад

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

    • @Tera-h7e
      @Tera-h7e 20 дней назад

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

    • @slimeball3209
      @slimeball3209 20 дней назад

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

    • @Tera-h7e
      @Tera-h7e 20 дней назад

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

  • @PS-vj6jz
    @PS-vj6jz 3 года назад +17

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

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

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

  • @dannynew8065
    @dannynew8065 3 года назад +1

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

  • @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 понятно, спасибо)

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

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

  • @zikrullohtolibjonov3710
    @zikrullohtolibjonov3710 3 года назад

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

    • @zikrullohtolibjonov3710
      @zikrullohtolibjonov3710 3 года назад

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

  • @АлександрБычко-п9ъ
    @АлександрБычко-п9ъ 3 года назад +1

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

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

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

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

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

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

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад

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

  • @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 20 дней назад

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

  • @Tera-h7e
    @Tera-h7e 20 дней назад

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

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

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

    • @Tera-h7e
      @Tera-h7e 14 дней назад +1

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