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

2021 ж. 31 Қаң.
17 304 Рет қаралды

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

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

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

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

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

    @ASFlasher@ASFlasher2 жыл бұрын
  • приставочка Event в конце по какой нотации было?

    @Pravda-bw3tj@Pravda-bw3tj2 жыл бұрын
  • Блин кайф спасибо)))

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

    @sanded9321@sanded93212 жыл бұрын
    • не в обиду автору, у него много полезного на канале, но тут да, соглашусь)

      @ravenempty3562@ravenempty3562Ай бұрын
  • В какой момент в данном случае нужно отписываться от события?

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

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

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

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

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

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

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

      @gamedevlavka@gamedevlavka3 жыл бұрын
    • Есть вариант связывания через ScriptableObject Event

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

    @slimeball3209@slimeball32099 ай бұрын
  • у тебя "народный" RIder или лиц?

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

      @gamedevlavka@gamedevlavka2 жыл бұрын
  • а нужно ли отписываться от событий?

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

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

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

      @gamedevlavka@gamedevlavka3 жыл бұрын
    • @@gamedevlavka понятно, спасибо)

      @nikita8291@nikita82913 жыл бұрын
  • Надо было еще хоть пару слов про делегаты рассказать.

    @user-yx5mb4sz9t@user-yx5mb4sz9t2 жыл бұрын
  • блин даже ide показывает что эти this лишние

    @davidhops3952@davidhops3952 Жыл бұрын
    • var тоже лишние) смотрю на это и думаю, что я идиот, чего то не понимаю) но на деле - это лишь стиль кода автора ролика)

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

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

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

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

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

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

      @1pampers13aby7@1pampers13aby72 жыл бұрын
KZhead