Ваш канал просто находкаю. За тему паттернов отдельное спасибо! Не знаю думали вы об этом или нет, но было бы здорово иметь под каждым видио сылку на репотозиторий с материалами урока.
@@gaitavr1992 дело в том, что несмотря на то, что видео короткое, я трачу на него раз в 5 больше времени, т.к. приходится останавливать и самому вникать в написанный код. Зачастую десятиминутное видео изучается около часа.
@@gaitavr1992 ну зачастую вы показываете сразу 3 класса на одном экране, которые наследуют друг-друга и при этом объясняете как оно все работает. Я думаю, мало кто сможет сразу прочитать весь код и вникнуть в суть за такое короткое время. Возможно, некоторые просто вообще не вникают в код, а просто слушают как оно на словах работает, тогда им нормально.
Касательно вопроса из видео, мне посоветовали всегда использовать паттерны, их по сути не нужно писать совсем с нуля, но они могут быть лучше чем стандартные методы Unity
Спасибо за видео. Подскажите, что за синтаксис на 2:05 на строке 20: ~Player(){... - будто конструктор. Что за тильда? Вызывается при уничтожении объекта?
Добрый день, вопрос как быть с очередностью подписок на каком-то ивенте? Пример: персонаж получает урон, подписано 2 ивента 1 хочет убрать 10 от входного урона, а второй 20%. Из бизнес требований ясно, что сначала должны вычитаться проценты, а только потом целые части. Как решаются такие проблемы? Заранее спасибо
Спасибо за видос!) Макс, на 2:07 ты вызываешь деструктор, получается сборщик мусора добавит этот объект в очередь на удаление и выполнит отписку? Просто не понятно с активными ссылками, вроде же GC такие объекты игнорит
Добрый день, вопрос применим ли этот паттерн к следующему поведению. Персонаж взаимодействует с обьектами, либо передвигается по navmesh. Если нажать на обьект песонаж должен подойти к нему и толкьо после этого повзаимодействовать с ним. Обычно это дело делают через проверку дистанции до обьекта, но выглядит это давольно тапорно. Либо как это реализуется без патернов?
Unitask это часть UniRX, а Zenject это совсем другая история. Недавно на канале вышел ролик про async await чисто C#, это даст понимание примерное об UniRX, а Zenject я через несколько месяцев прикручу к tower defense
4:00 жиза 100%, когда игра готова, а из последних сил еще надо прикручивать аналитику то хардкодом ляп ляп в методах, которые делают что-то интересное через статик аналитик класс)
Я в таких случаях делаю медиатор, который реагирует на какое-то событие с данными, при срабатывании события медиатор берёт эти данные и отправляет в аналитику. Но я тоже грешу и иногда прям в коде хреначу))
Совсем маленьким паттерны еще не нужны) Нужен рабочий, простой код и понимание используемого инструментария (если брать этот ролик, то понимать отличие делегата от события)
Отличное видео. Но надо посидеть, разобраться в каждом скрине и начинает доходить. Хотя в начале заходишь, думаешь такой: "О Обсервер за 6 мин, огонь, ща" Но в реальности зависаешь на паузе на часик другой.
@@gaitavr1992 Так же как и linq, во всем нужна своя мера, но я вот пришел к тому что мне не нужен update в 95% случаев. ну и я имел опыт что update`ы "жрут" намного больше чем мусор от unirx - между двух зол выбирай меньшее
2:50 Говоришь "Слабая связанность" - и тут же делаешь жоскую ссылку на статический класс, вместо нормального получения зависимости через конструктор и подписки на событие у этой реализации >__
Со статическим классом связанность жесткая, а между конфиг провайдером и остальными частями системы слабая. Когда у вас в проекте будет необходимость пробросить в несколько конструкторов вглубь какую-либо систему - я бы на это посмотрел. Ну или в крайнем случае использовать DI контейнер
@@gaitavr1992 а кто в наше время в здравом уме работет без DI на сложных проектах? В любом случае, код с конструктором проще поддерживать, чем код в котором куча статических классов с состоянием. Потому как понятно какие у класса зависимости и их можно подменить во врем тестирования (при условии использования интерфейсов).
Сразу 2 пункта: DI тяжелый, для многих проектов это критично, проходили. DI - расслабляет разработчика планировать свою архитектуру, бахнул INJECT и готово, вы когда-нибудь строили дерево зависимостей в таких проектах, я видел тысячи узлов, которые невероятно сложно менять. EventHolder это один из классических способов внедрения посредников в работу, есть возражения?
@@gaitavr1992 EventHolder - это типичная шина событий из времён AS3 - AddEventListener и прочее безобразие, столько этого мусора перековырял в проектах того времени не перечесть - подисаться подписался - а отписаться забыл - приплыли, потеря памяти, плавающие ошибки. А на счёт бахнуть Inject - я вот ща в проекте на 165000 строк запустил поиск - 2 применения (компонент локализации и система окон - для резолва панелей) - все остальные зависимости передаются через конструктор - в среднем не больше 5 зависимостей (локализация и аналитика не в счёт). Зависит от того как вы выстроите в своей команде подход к разработке, проверке кода и прочему - следуешь простым правилам и код не становится совсем уж плохим.
Вначале я посмотрел - не понял. Решил поискать инфу у других, вроде как нашел - (ruclips.net/video/cXU1rETKm24/видео.html) - понял Во второй раз посмотрел - кое как, если честно. Тяжело было понять кто там наблюдатель, кто наблюдаемый, где агрегатор и т.д. В конце более менее уже было похоже, то что я где-то в другом месте увидел. "Голова уже кружится, пора отдыхать видимо". Можно вопрос? Везде пишут, то что паттерны не нужно на право и на лево впихивать. Для чего как вы думаете больше всего подходит паттерн наблюдатель?
Наблюдатель это, наверное, самый употребляемый паттерн, так как инструмент в языке уже готовый(события). Поэтому и применяется везде, где обработчики действия могут меняться и не известны отправителю. Это ослабляет связь(особенно важно при использовании событий на низком уровне, а подписывается высокоуровневый)
Конечно инетерсно это видео. У тебя самый прикольный канал среди русскоязычных юнити девелоперов. Жаль только видео давно не выходят.
Заебись!)
Продолжай)
Ваш канал просто находкаю. За тему паттернов отдельное спасибо!
Не знаю думали вы об этом или нет, но было бы здорово иметь под каждым видио сылку на репотозиторий с материалами урока.
Спасибо, у меня почти под каждым видео репозиторий. Исключение теоретические видосы)
@@gaitavr1992 Ну тогда вообще все идеально! ) Еще раз спасибо за канал и работу!
Спасибо за такую информацию, в связке (юнити + паттерны) я такого не находил. Очень полезно.
Приятно удивлен, что тема вызывает интерес у разработчиков
@@gaitavr1992 да просто хочется научиться писать красивый код, который можно будет в будущем поддерживать)
комментарий в поддержку )
UniRx наше всё! Очень интересна тема жонглирования потоками в UniRx
Там нет потоков
@@gaitavr1992 Ага, я понимаю, не так выразился - подписками.
Шикарные видосы! Но слишком плотно наваливаешь) можешь делать на один уровень подробнее?
Сложно соблюсти баланс между длиной видео и понятностью материала. Если есть вопросы - спрашивай
@@gaitavr1992 дело в том, что несмотря на то, что видео короткое, я трачу на него раз в 5 больше времени, т.к. приходится останавливать и самому вникать в написанный код. Зачастую десятиминутное видео изучается около часа.
А кто-то справляется за раз, ему ускорять видео или мотать нужно в таком случае?
@@gaitavr1992 ну зачастую вы показываете сразу 3 класса на одном экране, которые наследуют друг-друга и при этом объясняете как оно все работает. Я думаю, мало кто сможет сразу прочитать весь код и вникнуть в суть за такое короткое время. Возможно, некоторые просто вообще не вникают в код, а просто слушают как оно на словах работает, тогда им нормально.
@@Nightmareinfos Это ведь канал о unity, а не изучении Шарпа) Непонятно - ставишь на паузу и разбираешься. Весь код же на экране
Чотко, мне понравилось)
Делал что то подобное...как по мне очень удобно.
Вот бы угадать требования по аналитике
Касательно вопроса из видео, мне посоветовали всегда использовать паттерны, их по сути не нужно писать совсем с нуля, но они могут быть лучше чем стандартные методы Unity
Использую UniRx и Zenject, хочу еще наконец-то разобраться в UniTask
Спасибо за видео. Подскажите, что за синтаксис на 2:05 на строке 20: ~Player(){... - будто конструктор. Что за тильда? Вызывается при уничтожении объекта?
Да, это деструктор
деструктор
Очень хотелось бы больше материалов по ECS ( От Entitas или Юнитишный) как никак, но юнитеки видят в этом будущее, да и у компаний спрос растет.
Наконец-то видео по паттернам в Unity, Хоспаде, храни Максима
Спасибо
Спасибо за то, что ты есть. Ты делаешь очень хороший и качественный контент для программистов!)
А есть ли смысл в дтошке использовать свойство с публичным get и set?
Лайк за делегат комбайн! Я думаю, 99% юнити-разработчиков и слов-то таких не знают)
Добрый день, вопрос как быть с очередностью подписок на каком-то ивенте?
Пример: персонаж получает урон, подписано 2 ивента 1 хочет убрать 10 от входного урона, а второй 20%.
Из бизнес требований ясно, что сначала должны вычитаться проценты, а только потом целые части.
Как решаются такие проблемы?
Заранее спасибо
Добрый. Порядок подписки определяет порядок обработки, но это ненадёжно. Нужен посредник, который обработает урон и нанесет результат
Пытался в UniRX, не очень получилось. Хотелось бы видео о нем)
Спасибо за видос!) Макс, на 2:07 ты вызываешь деструктор, получается сборщик мусора добавит этот объект в очередь на удаление и выполнит отписку? Просто не понятно с активными ссылками, вроде же GC такие объекты игнорит
Это я протупил и оставил, оно не нужно
Ты крут! Но это пока не мой уровень, загляну через пару лет, может что-то понятно станет)) А пока подпишусь на будущее.
Це дуже цікаво хотілось би більше інформації і прикладов в коді
А вообще нужен ли Update? Я только изучаю Unity, тренируюсь и проверяю разные идеи и практически забыл, что есть Update. Всё делаю в сопрограммах.
Добрый день, вопрос применим ли этот паттерн к следующему поведению.
Персонаж взаимодействует с обьектами, либо передвигается по navmesh.
Если нажать на обьект песонаж должен подойти к нему и толкьо после этого повзаимодействовать с ним.
Обычно это дело делают через проверку дистанции до обьекта, но выглядит это давольно тапорно.
Либо как это реализуется без патернов?
Стейт машина подойдет
Хотелось бы про связку UniRx, UniTask и Zenject послушать
Unitask это часть UniRX, а Zenject это совсем другая история. Недавно на канале вышел ролик про async await чисто C#, это даст понимание примерное об UniRX, а Zenject я через несколько месяцев прикручу к tower defense
Очень хотелось бы услышать видео о UniRx, желательно в связке с Zenject
Да, до этих тулзов я тоже доберусь, там одним видео не отделаться
4:00 жиза 100%, когда игра готова, а из последних сил еще надо прикручивать аналитику то хардкодом ляп ляп в методах, которые делают что-то интересное через статик аналитик класс)
Я в таких случаях делаю медиатор, который реагирует на какое-то событие с данными, при срабатывании события медиатор берёт эти данные и отправляет в аналитику. Но я тоже грешу и иногда прям в коде хреначу))
Я не понимаю откуда ты взял IClickHandler, где ты его описал?
Но насколько я понял в этом интерфейсе один метод, который ты вызываешь
Спасибо !!! коротко и информативно
Видео просто бомба) Спасибо за старания)
Коммент просто накрученный треш.
Полезно! Спасибо!❤️
Хотелось бы более разжевано...так сказать, для совсем маленьких)
Совсем маленьким паттерны еще не нужны) Нужен рабочий, простой код и понимание используемого инструментария (если брать этот ролик, то понимать отличие делегата от события)
Полезно! Спасибо за инфу!
Отличное видео. Но надо посидеть, разобраться в каждом скрине и начинает доходить.
Хотя в начале заходишь, думаешь такой: "О Обсервер за 6 мин, огонь, ща"
Но в реальности зависаешь на паузе на часик другой.
нет вообще не догадался, даже мысли такой не было
Максим, а расскажи про классы с окончанием Provider. В этом видео они упоминаются часто. Это паттерн какой то или ты просто от себя так именуешь?
Это не паттерн, просто суффикс, который очерчивает суть класса
Давно уже на Rx. Касаемо Unity: UniRx, а когда вижу методы Update в чужом коде, то становится не по себе.
Не нужно от update отказываться. Unirx генерит много мусора
@@gaitavr1992 Так же как и linq, во всем нужна своя мера, но я вот пришел к тому что мне не нужен update в 95% случаев. ну и я имел опыт что update`ы "жрут" намного больше чем мусор от unirx - между двух зол выбирай меньшее
Ничего не понял но было очень интересно, лайк.
Я вообще начинающий. Смотрю и ничего не понимаю. И это отличный повод разобраться.
тоже самое, настолько круто, что я не понимаю ничего)))
Что то я не до конца понял... В UserRegistrationInfo то что? В 5.55
Это обычный класс, там нечего показывать
Как понять паттерн? Типа шаблон или что?
Да
Ты случае не работал в Blizzard ?
Хех, если бы) это моя любимая компания по части игр
колбэк зло, await рулит)
Зачет, благодарю бро!
2:50 Говоришь "Слабая связанность" - и тут же делаешь жоскую ссылку на статический класс, вместо нормального получения зависимости через конструктор и подписки на событие у этой реализации >__
Со статическим классом связанность жесткая, а между конфиг провайдером и остальными частями системы слабая. Когда у вас в проекте будет необходимость пробросить в несколько конструкторов вглубь какую-либо систему - я бы на это посмотрел. Ну или в крайнем случае использовать DI контейнер
@@gaitavr1992 а кто в наше время в здравом уме работет без DI на сложных проектах? В любом случае, код с конструктором проще поддерживать, чем код в котором куча статических классов с состоянием. Потому как понятно какие у класса зависимости и их можно подменить во врем тестирования (при условии использования интерфейсов).
Сразу 2 пункта: DI тяжелый, для многих проектов это критично, проходили.
DI - расслабляет разработчика планировать свою архитектуру, бахнул INJECT и готово, вы когда-нибудь строили дерево зависимостей в таких проектах, я видел тысячи узлов, которые невероятно сложно менять. EventHolder это один из классических способов внедрения посредников в работу, есть возражения?
@@gaitavr1992 EventHolder - это типичная шина событий из времён AS3 - AddEventListener и прочее безобразие, столько этого мусора перековырял в проектах того времени не перечесть - подисаться подписался - а отписаться забыл - приплыли, потеря памяти, плавающие ошибки. А на счёт бахнуть Inject - я вот ща в проекте на 165000 строк запустил поиск - 2 применения (компонент локализации и система окон - для резолва панелей) - все остальные зависимости передаются через конструктор - в среднем не больше 5 зависимостей (локализация и аналитика не в счёт). Зависит от того как вы выстроите в своей команде подход к разработке, проверке кода и прочему - следуешь простым правилам и код не становится совсем уж плохим.
Если бы все эти правила были просты, то тех долг никогда не возникал бы
Макс го видео по AI в Unity!
О, это как-нибудь потом) Наверное буду делать такое в TowerDefense
нашёл баг: я смотрел, но у меня всплыла подсказка)
Безусловно очень полезно, но капец сложно 😅
Вначале я посмотрел - не понял.
Решил поискать инфу у других, вроде как нашел - (ruclips.net/video/cXU1rETKm24/видео.html) - понял
Во второй раз посмотрел - кое как, если честно. Тяжело было понять кто там наблюдатель, кто наблюдаемый, где агрегатор и т.д. В конце более менее уже было похоже, то что я где-то в другом месте увидел. "Голова уже кружится, пора отдыхать видимо".
Можно вопрос? Везде пишут, то что паттерны не нужно на право и на лево впихивать. Для чего как вы думаете больше всего подходит паттерн наблюдатель?
Наблюдатель это, наверное, самый употребляемый паттерн, так как инструмент в языке уже готовый(события). Поэтому и применяется везде, где обработчики действия могут меняться и не известны отправителю. Это ослабляет связь(особенно важно при использовании событий на низком уровне, а подписывается высокоуровневый)
От души, Благодарю!
EventHolder уже сильно похож на на другой шаблон
В первом или втором случае?
@@gaitavr1992 5:30 - больше похоже на посредника
Ну да, связка получилась
такой годный контент и очень мало просмотров((
Я думал я прям совсем говнокодер,а оказывается что я "наблюдатель"=)
В рамках этого канала продолжайте оставаться)
+
Вроде тема хорошая и текст неплохой, но этот говор или акцент… пи***ц бесит что тошнить начинает после 5 минут просмотра
Не смотри, мне не сильно интересен подобный фидбек