Делегаты и события в unity за 10 минут

  Рет қаралды 30,506

Максим Крюков

Максим Крюков

4 жыл бұрын

В этом видео мы пройдемся по теории делегатов и события в языке c#. Начнем с основ и пройдемся по встроенным инструмента, которые облегчают разработку.
Предлагаю также ознакомиться с плейлистом по tower defense - • Как сделать игру tower...
Применение делегатов с потоками - • Многопоточность и запи...
Поддержка канала:
Patreon - www.patreon.com/user?u=32502669
В крипте:
BTC - 16WmTb4VTFGYrwEjjnMKNNMMzsMB1rPEqD
ETH - 0x8d35406f8317b846528d0a9ea4a34ce59968dff2
XRP - rLW9gnQo7BQhU6igk5keqYnH3TVrCxGRzm (TAG - 1438215071)
LTC- MNSWdzdVsUMnozSU5HhUPEscfxaUK3Fdck
#unity #events #delegates

Пікірлер: 85
@andrewmad
@andrewmad 3 жыл бұрын
Хороший ролик, благодарю Максим!
@user-ty2he8sg5w
@user-ty2he8sg5w 2 жыл бұрын
Спасибо за ролик. Весьма подробно и понятно
@j0schiHatake
@j0schiHatake 2 жыл бұрын
Спасиб, круто обьясняеш.
@titanovsky
@titanovsky Жыл бұрын
Большое спасибо.
@turalaliyev1764
@turalaliyev1764 Жыл бұрын
Твой канал просто Находка!!! ПРодолжа!!!
@zaampogroup8367
@zaampogroup8367 3 жыл бұрын
Спасибо, разобрался)
@easycodeunity3d14
@easycodeunity3d14 2 жыл бұрын
Спасибо!
@user-jx3gn8qy2q
@user-jx3gn8qy2q 2 жыл бұрын
Спасибо!!!
@brunskiy
@brunskiy 2 жыл бұрын
Спасибо
@bigbluepie8983
@bigbluepie8983 3 жыл бұрын
Спасибо Максим, информативное видео! Все по взрослому
@Eduard02834
@Eduard02834 2 жыл бұрын
Sposibo bolshoe
@CrusaderUA
@CrusaderUA 3 жыл бұрын
Хороший ролик :) В разделе про Action и Func можно было добавить ещё про Predicate, как о Func, у которого возвращаемый тип bool
@MrArtrynk
@MrArtrynk 4 жыл бұрын
Упоминания про работу с GC очень полезны, очень много демонов в нюансах использования конструкций языка, которые хороши для запуска табуретки, но абсолютно не прокатывают на коммерческой разработке.
@Ivan60179
@Ivan60179 3 жыл бұрын
Спасибо за видео. Картинка на 29 секунде дала больше понимания чем за два часа по книге
@gaitavr1992
@gaitavr1992 3 жыл бұрын
Неплохо)
@user-dv5ue1om3m
@user-dv5ue1om3m 3 жыл бұрын
Ух, дружище, только с помощью твоего видео понял, зачем нужны делегаты на практике, спасибо)
@tomasgammister5776
@tomasgammister5776 3 жыл бұрын
очень нужная тема ,но слишком быстро и без наглядны примеров в движке. можно чуть по медленнее ? ))
@gaitavr1992
@gaitavr1992 3 жыл бұрын
Все, кроме UnityEvents работает в движке так же, как и в .Net
@tomasgammister5776
@tomasgammister5776 3 жыл бұрын
@@gaitavr1992 не все такие опытные. в двике научился принципам C# но как раз проектирванию кода мало кто понятно рассказывает. а ты рассказываешь то что нужно но не наглядно для среднего уровня. спасибо! все равно подписался !. годный канал!
@gaitavr1992
@gaitavr1992 3 жыл бұрын
У меня еще есть видео из недавних - паттерн наблюдатель из той же оперы, может полезно будет
@tomasgammister5776
@tomasgammister5776 3 жыл бұрын
посмотрел уже )) спасибо. @@gaitavr1992
@KillerBestUselesmoun
@KillerBestUselesmoun 3 жыл бұрын
Возник вопрос. В Unity очень часто вижу, что подписка на событие происходит в Start или в OnEnable, при этом обработчик события может вызваться в любой момент игры, но вышеперечисленные методы выполняются только один кадр в начале игры. Как так)?
@gaitavr1992
@gaitavr1992 3 жыл бұрын
В этом то и смысл событий и делегатов. Их не нужно постоянно проверять. Когда происходит подписка на событие - мы просто добавляем свой метод в коллекцию другого обьекта, который будет вызывать событие. Когда это произойдет то все методы, которые содержаться в коллекции выполняться один за другим. Поэтому подписываются обычно один раз в начале (но не всегда). Наверное имеет смысл еще раз видео пересмотреть)
@user-oc9be5bb2v
@user-oc9be5bb2v Жыл бұрын
6:51 в екземпляр делегата знаком = присвоюється метод іншого класу? При цьому виклик методу буде такий же, як і для підписантів з "+=", але тільки 1 раз?
@user-mw7mg3zq9f
@user-mw7mg3zq9f 2 жыл бұрын
Понял после 5 раз. На деле оказалось проще все. Странная эта штука - программирование)
@gaitavr1992
@gaitavr1992 2 жыл бұрын
Главное, что понял)
@richardgreen9787
@richardgreen9787 3 жыл бұрын
Когда нибудь начну понимать твои туторы) жаль нету курсов для начинающих по этим темам
@gaitavr1992
@gaitavr1992 3 жыл бұрын
Информации для начинающих тьма, только и успевай читать(смотреть)
@ruslan_yefimov
@ruslan_yefimov 2 жыл бұрын
Я разобрал этот урок раза с 4 на 0.75 скорости, да ещё и потратив на гуглёжку часа 2 xd понимаю
@user-mw7mg3zq9f
@user-mw7mg3zq9f 2 жыл бұрын
Появился вопрос. Если у нас система, допустим, как в задании на ревью, т.е множество объектов влияющих на некоторые параметры одного объекта (в нашем случае счет), можно ли использовать ивент для передачи значения? Если да, то будет ли правильным использование статик ивента в множестве объектов для создания менее связанного кода. Или я вообще уже не в те дебри лезу и не правильно понимаю слабую связь? Если вопрос слишком обширный, могу подождать ревью)
@ilyanazarov7001
@ilyanazarov7001 2 жыл бұрын
Не могу говорить за каноничность такого подхода, но я его успешно использовал в своем проекте. Объект спаунится на сцене и вызывает статический ивент своего класса, передавая в нем себя как параметр. Дальше, кому надо, сам разберется, что это за объект и что с ним делать дальше.
@user-mw7mg3zq9f
@user-mw7mg3zq9f 2 жыл бұрын
@@ilyanazarov7001 Я вроде разобрался. Ивент у меня теперь на "игроке", а данные с префаба по рейкасту беруться. Но это уже в другом проекте) Так сказать, теперь не объект говорит, что его нажали, а игрок. Это, кстати, позволило уйти от статиков. upd: а еще, посмотрев на свой код которому 5 дней, я уже понял, что наговнокодил :с
@user-zd9dz8tn5s
@user-zd9dz8tn5s 2 жыл бұрын
Ничего не понял но очень интересно! Пойду подробней искать
@maxdereviagin6669
@maxdereviagin6669 2 жыл бұрын
Я вот использую паттерн Signal вместо этого всего. Из проблем - очистить его может любой извне, но зато плюсы - можно избежать случайной двойной подписки.
@gaitavr1992
@gaitavr1992 2 жыл бұрын
SignalBus?
@maxdereviagin6669
@maxdereviagin6669 2 жыл бұрын
​@@gaitavr1992​, я не знаток точных названий паттернов, к сожалению. Класс Signal с методами AddListener, RemoveListener, Invoke и Clear. Объявляется как public readonly Signal (или Signal). По сути, это тот же event/delegate, только даёт немного больше контроля в некоторых местах (ну, и свои недостатки). Просто в прошлом работал на больших проектах на AS3, потом на Haxe, и везде юзали сигналы. Написал себе привычную реализацию.
@anvarito6226
@anvarito6226 3 жыл бұрын
что за саундтрэк на фоне?
@gaitavr1992
@gaitavr1992 3 жыл бұрын
Starcraft 2
@Obelardos2
@Obelardos2 3 жыл бұрын
гугли cell
@mkovalevworkacc8440
@mkovalevworkacc8440 2 жыл бұрын
Должен быть объявлен тип делегата. Фактически тип делегата, это сигнатура метода, то есть набор входных параметров и возвращаемое значение. Сначала идет модификатор доступа, затем ключевое слово delegate, и после него аналог метода - возвращаемый тип, имя и входные параметры. Только имя тут является типом делегата. 0.58 Противоречие, сначала говорится что "Фактически тип делегата, это сигнатура метода", через одно предложение "Только имя тут является типом делегата".
@gaitavr1992
@gaitavr1992 2 жыл бұрын
Присылайте таймкоды
@3epyc
@3epyc Жыл бұрын
В 2021 версии однако, Action заменили на UnityAction.
@user-jv3fq5nk7w
@user-jv3fq5nk7w Жыл бұрын
Для тех кто, как я сталкнётся с ошибкой при попытке повторить написанное на 3:50. Поясняю, лучше не делать из метода старт - корутину(IEnumerator Start()), а сделать отдельный метод корутину, и в старте её вызывать через StartCoroutine(Название функции());
@KOKERzeroZEROseven
@KOKERzeroZEROseven Жыл бұрын
ниче не понятно но очень интересно
@hryhoriinevmerzhytskyi4299
@hryhoriinevmerzhytskyi4299 9 ай бұрын
Привіт, а які тоді мінуси в практиці перманентного юзу UnityEvent ?
@Bushido_Cat
@Bushido_Cat 8 ай бұрын
Невозможен полноценный ревью кода и если в инспекторе слетят все ссылки, нужно будет сново понимать что где и куда было опрокинуто, а так это стильно модно молодежно.
@hryhoriinevmerzhytskyi4299
@hryhoriinevmerzhytskyi4299 8 ай бұрын
@@Bushido_Cat Та ну, просто незвично для людей, котрі не звикли цим користуватись. Взагалі, виглядає як найзручніший контроль залежностей. Я хз, але здається, що інтерпретатор/транслейтер (plugin) на макс. 35 рядків коду - це імба, якщо ти реюзаєш велику кількість коду. Чесно ка жучи, я сподівався на те, що мені хтось вкаже на зайвий юз пам'яті, процесору, буферів і т.д. , але якщо ми говоримо про архітектуру - мені досі цікаво почути критику на моє питання
@Bushido_Cat
@Bushido_Cat 8 ай бұрын
@@hryhoriinevmerzhytskyi4299 лучше попробуй задать этот вопрос Chat GPT 4.
@Diyozen
@Diyozen 4 жыл бұрын
Как всегда годно! З.ы. разве в начальном примере, в качестве вызывающего делегат, не должно быть "время" (смерть)? Или это уже событие?
@gaitavr1992
@gaitavr1992 4 жыл бұрын
Не совсем понял вопрос. Вы имеете ввиду время как параметр? Если да, то это опционально как в делегате так и в событии. Если не правильно понял - поправьте
@Diyozen
@Diyozen 4 жыл бұрын
@@gaitavr1992 ​вопрос по поводу примера, где рассматривается завещание и смерть в качестве запуска триггера. По идее смерть вызывает делегат\событие, а не поверенный. Или я что-то упустил?
@gaitavr1992
@gaitavr1992 4 жыл бұрын
Тут имелось ввиду, что кто-то начнет выполнять действия, которые не известны до самого последнего момента. Поверенный для этого подходит лучше. Смерть тоже подходит, но в контексте будет звучать странно, если смерть начнет работать с манифестом)
@mastervolodsobeck5176
@mastervolodsobeck5176 2 жыл бұрын
Благодарю, но форма описания беглая и оочень обобщенная, для новичка - совсем запутался в "events", зачем эвенты, примеры непонятные... Сори, только начал изучать.
@stanislavsh6582
@stanislavsh6582 3 жыл бұрын
Про потенциальные утечки, когда оба объекта больше не нужны, но держат друг на друга ссылки из-за того что подписаны - совсем вскользь упомянул. Ну и про то что события не потокобезопасны. Ну да ладно, это придирки, еще и как понимаю к юнити слабо относящиеся.
@neverworld8815
@neverworld8815 3 жыл бұрын
Я читал что использование делегатов не даёт весомых плюсом в сравнении с интерфейсами
@gaitavr1992
@gaitavr1992 3 жыл бұрын
Не совсем понял, почему вы сравниваете делегат и интерфейс?
@crokocat
@crokocat 2 жыл бұрын
Func это поистине странная хрень, не пользовался никогда. Либо delegate, либо Action...
@babaukos
@babaukos 3 жыл бұрын
Я дуже радий що знайшов ваш канал. Будь ласка, не зупиняйтесь, ваш контент вигідно виділяється серед каналів по Unity.
@user-hp3kt3ot7d
@user-hp3kt3ot7d 4 жыл бұрын
Спасибо тебе! Украинский акцент звучит ужасно, но информация супер. Как раз хотел погрузиться в тему событийного программирования)
@gaitavr1992
@gaitavr1992 4 жыл бұрын
Едуард Бездухов может потому что я украинец?)
@user-hp3kt3ot7d
@user-hp3kt3ot7d 4 жыл бұрын
@@gaitavr1992 Ну это очевидно) Я тоже с Украины. Черниговская область. Информационная ценность видоса на высоте)
@gaitavr1992
@gaitavr1992 4 жыл бұрын
Едуард Бездухов спасибо)
@vladimirkraft4315
@vladimirkraft4315 2 жыл бұрын
Очень сложно, для новичка вообще не понятно
@gaitavr1992
@gaitavr1992 2 жыл бұрын
Жаль
@kastets2
@kastets2 3 жыл бұрын
делиХаты🤣🤣🤣
@kastets2
@kastets2 3 жыл бұрын
ДебахЛох
@gaitavr1992
@gaitavr1992 3 жыл бұрын
Можно замутить микс со всеми подобными словами. Если что, то есть видос job system, там тоже все хорошо (жоп система, скедул)
@babaukos
@babaukos 3 жыл бұрын
горбатый коллектор
@Bushido_Cat
@Bushido_Cat 8 ай бұрын
Это был не урок, а беглый обзор видов делегатов и событий, абсолютно сырой и ни чем не подкрепленный. Я видел тебя рекламировал, нахваливал И.сакутин. Ведь ту же самую инфу можно найти на сайте Майкрософт. Там тоже пишут что такое делегат и какие есть виды. Мог бы для каждого сделать наглядный практичный пример из игры, чтобы понять зачем и для чего использовать тот или иной способ. Показать плюсы и минусы наглядно на примере. А так очень сухо и пресно, как у всех одно и тоже прочитал и давай пересказывать. Я ожидал конечно большего от тебя, а по итогу ничего нового и полезного лишь сухая теория и примеры синтаксиса. Ровным счетом ни ху я. А так ты красавчик, ничего личного 😂
@gaitavr1992
@gaitavr1992 8 ай бұрын
И нахер ты сюда пришёл? Иди читай офф сайт, пока ещё доступен, клоун
@666kyk
@666kyk 3 жыл бұрын
видео невозможно смотреть из за южного гэ, каждый раз слово делиГЭт выбивает улыбку и внутренний ор =) в остальном норм.
@gaitavr1992
@gaitavr1992 3 жыл бұрын
И полезно и смешно, я рад)
@Ivan60179
@Ivan60179 3 жыл бұрын
Это особенность автора. Респект мне нравиться. Ведь и сам Гекаю)))
@user-jv7tb6fz9h
@user-jv7tb6fz9h 9 ай бұрын
езё одие хэкер харний ппц диз!
@malvislightfadynightgames2925
@malvislightfadynightgames2925 3 жыл бұрын
Максим, спасибо огромное за твои видео, но я такой мудак, что меня очень сбивает твой украинский акцент, связанный с буквой Г. Особенно, когда ты говоришь Debug.Log. Это звучит как Дебах Лох и я просто не могу сконцетрироваться. Прости меня
@Nightmareinfos
@Nightmareinfos 2 жыл бұрын
радуйся, что видос не на украинском и ты вообще можешь его понимать на своем языке)
@oldosgame
@oldosgame 2 жыл бұрын
тебе букву "г" нормально выговаривать религия не позволяет?
@gaitavr1992
@gaitavr1992 2 жыл бұрын
Религия не позволяет что-то обьяснять всяким ноунеймам
@oldosgame
@oldosgame 2 жыл бұрын
@@gaitavr1992 а ты не ноунейм?) я просто спросил, почему ты так плохо выговариваешь букву г. это очень сильно режет ухо. "делехаты". ужасно
@gaitavr1992
@gaitavr1992 2 жыл бұрын
Отписуйся и не хрузи меня
НРАВИТСЯ ЭТОТ ФОРМАТ??
00:37
МЯТНАЯ ФАНТА
Рет қаралды 8 МЛН
Red❤️+Green💚=
00:38
ISSEI / いっせい
Рет қаралды 86 МЛН
Pleased the disabled person! #shorts
00:43
Dimon Markov
Рет қаралды 28 МЛН
ВОДА В СОЛО
00:20
⚡️КАН АНДРЕЙ⚡️
Рет қаралды 31 МЛН
Что такое делегаты в С#? Как их можно использовать в Unity?
23:11
ООП вопросы на юнити собеседовании
14:11
Максим Крюков
Рет қаралды 43 М.
⚡ Всё про события в Unity 3D
21:38
Emerald Powder
Рет қаралды 103 М.
C# Delegates Делегаты
18:14
codaza
Рет қаралды 84 М.
Delegates, Events, Actions and Funcs - The Observer Pattern (Unity & C#)
11:48
Паттерн Observer, С#, unity,  gamedev,
15:04
Sergey Kazantsev
Рет қаралды 7 М.
Атрибуты в unity3D и C#
12:01
Максим Крюков
Рет қаралды 9 М.
НРАВИТСЯ ЭТОТ ФОРМАТ??
00:37
МЯТНАЯ ФАНТА
Рет қаралды 8 МЛН