No video

Паттерн Стратегия в Unity

  Рет қаралды 6,074

Unity Оk

Unity Оk

Күн бұрын

Сегодня на уроке мы разберем паттерн Стратегия. Этот шаблон используется для создания различных поведений и состояний. У нас в гостях будут 4 вида животных, с которыми мы и будем учить различные поведения.
Никнейм инстаграм: unityok_
Ссылка на аккаунт инстаграм: / unityok_
Поддержка канала: 5336 6901 0794 5232 сбер

Пікірлер: 41
@AB-sm9zd
@AB-sm9zd 2 жыл бұрын
Пример реализации паттерна рабочий! Пояснения супер! Спасибо за отличный видео урок!
@unityk555
@unityk555 2 жыл бұрын
И Вам спасибо за комментарий
@PushkaryovVsevolod
@PushkaryovVsevolod 3 ай бұрын
Ты очень умно и только рассказал. Очень.
@proKaps
@proKaps Жыл бұрын
Поначалу думал, что не пойму. Но всё так понятно, что побежал переделывать в своём проекте код! Спасибо!
@timgapps9878
@timgapps9878 2 жыл бұрын
Очень полезное видео! Очень хорошо объясняешь, мне как новичку очень понравилось, пожалуйста продолжай публиковать видео
@unityk555
@unityk555 2 жыл бұрын
Спасибо за отзыв, скоро будут новые уроки
@winterflamestudio
@winterflamestudio 2 жыл бұрын
Достаточно большой объем информации, но в целом разобраться можно, спасибо за урок.
@nano28950
@nano28950 Жыл бұрын
Респект, доступно, понятно, лайк!
@tarasklymenko5211
@tarasklymenko5211 2 жыл бұрын
Было бы здорово если бы ты в одном проекте на Гитхабе вылаживал паттерны Что бы всегда можно было скачать и посмотреть как реализуется паттерн
@unityk555
@unityk555 2 жыл бұрын
Согласен, уже стоит в планах. Давно собирался, но все руки не доходили.
@andrewmad
@andrewmad 3 жыл бұрын
Прикольно. Только я бы сделал один метод pressButton() с 2мя параметрами string name и bool play (для move | fly) + еще можно перенести словарь в базовый класс ... Тогда бы код выглядел совсем идеальным ...))
@unityk555
@unityk555 3 жыл бұрын
Спасибо, ну я как бы дал базу, старался показать сам паттерн, а код конечно же можно улучшать. 🙂👍
@andrewmad
@andrewmad 3 жыл бұрын
+ Я бы добавил для данной реализации, в базовом классе наследование от всех применяемых интерфейсов. Тогда можно будет избежать ошибки пропуска методов-оберток.
@unityk555
@unityk555 3 жыл бұрын
Спасибо за дополнение
@argotroll8811
@argotroll8811 2 жыл бұрын
тогда создав рыбу, к примеру она волшебным чудом начнет говорить, это будет не совсем очевидным явлением.
@mastervolodsobeck5176
@mastervolodsobeck5176 2 жыл бұрын
Сенк, доходчиво и полезно.
@2onlinemaster
@2onlinemaster 2 ай бұрын
В абстрактном классе определяете поведение? :(
@user-yx5mb4sz9t
@user-yx5mb4sz9t Жыл бұрын
Я думаю лучше поведения через конструктор устанавливать, а не использовать дополнительные методы.
@titanovsky
@titanovsky Жыл бұрын
Большое спасибо)
@Eduard02834
@Eduard02834 3 жыл бұрын
Sposibo bolshoe
@Magic__Man
@Magic__Man 2 жыл бұрын
У меня стало получаться писать код, но я наткнулся на огромный ласт, который предстоит понять)))
@unityk555
@unityk555 2 жыл бұрын
У вас все получится! Но этот паттерн немного сложноват для начинающих, если вы являетесь таким. Можно начать с тех что попроще, вроде синглтона, фабрики и прочих.
@Magic__Man
@Magic__Man 2 жыл бұрын
@@unityk555 спасибо! Будем посмотреть!
@nikolaylyah6563
@nikolaylyah6563 2 жыл бұрын
У меня такой вопрос. Пытаюсь реализовать механики поведения врагов, как по вашему мнению, какой из паттернов лучше использовать, Стратегии или State Machine? Спасибо за видео.
@unityk555
@unityk555 2 жыл бұрын
Я бы предпочел Стратегию, Стейт машин я обычно использую для игрока.
@Mr_TroubleMaker
@Mr_TroubleMaker 2 жыл бұрын
Привет. Вопрос такой. Возьмём класс Dog, в Awake создаются экземпляры поведений при нажатии на объект. Как долго будут жить на сцене эти экземпляры? GC их потом почистит или нужно самому как-то очищать когда объект Dog не активен?
@andrey_aka_skif
@andrey_aka_skif 2 жыл бұрын
Я не разработчик, я мимокрокодил, однако. Awake для объекта вызывается при его первой активации (загрузке) или при добавлении на сцену. В примере Александра при нажатии на объект мы не создаем поведения. Мы всего-лишь получаем ссылку на выбранный объект. А создаем поведения, действительно, в Awake. Любые созданные объекты обычно живут до тех пор, пока на них есть ссылки. Если под "объект Dog не активен" ты подразумеваешь activeSelf==false (убрана птичка в инспекторе), то сам объект Dog всё ещё существует на сцене. А значит, существуют и все поведения, на которые он ссылается. И будут существовать, пока Dog не будет удален со сцены. Только после этого GC удалит и их. Если Dog просто не активен, нет никакого смысла удалять поведения. При активации объекта понадобятся и его поведения. Оверхед на их пересоздание может перекрыть пользу от их удаления. Да и в принципе польза сомнительная. Удаление поведений это экономия на спичках на фоне затрат ресурсов на физику и графику. Но если очень хочется пересоздавать поведения (или что-то ещё), то делать это нужно не в Awake, а в OnEnable. А удалять, соответственно, в OnDisable.
@stastumanov4286
@stastumanov4286 2 жыл бұрын
А зачем в классе PanelController делегат private Delegate meth? Где он используется в коде? Спасибо.
@user-fw4zu1kd2z
@user-fw4zu1kd2z 2 жыл бұрын
топ
@user-sg2dh8rt4l
@user-sg2dh8rt4l 2 жыл бұрын
Как-то сложно очень. Стратегия - это про общий интерфейс чтобы можно было без ошибок подменять реализации
@unityk555
@unityk555 2 жыл бұрын
Это пример моего виденья этого паттерна. Я его использую на своих проектах примерно в таком виде. Если вы знаете лучшую реализацию, то конечно можете использовать Ваш метод. Я показал свой вариант, который безусловно можно улучшать и дорабатывать.
@user-sg2dh8rt4l
@user-sg2dh8rt4l 2 жыл бұрын
@@unityk555 я не про то. Просто видео называется "стратегия", а по факту механика с использованием стратегии. Тем кто заходит узнать про паттерн остальное не нужно.
@unityk555
@unityk555 2 жыл бұрын
Я хотел показать механику. Мне показалось что так будет наглядней. В любом случае в интернете много информации на эту тему.
@TheTempterable
@TheTempterable 2 жыл бұрын
Зачем вся эта канитель с текстовыми переменными и словарями ?! У тебя же стратегия! и через интерфесы! Просто в панели надо проверять животное, которое ты выставил на реализацию конкретного интерфеса.. А в этом случае, стратегия - бесполезна..
@unityk555
@unityk555 2 жыл бұрын
Это лишь пример. Применять или нет это уже ваше дело.
@user-zj9ir1tg2d
@user-zj9ir1tg2d 2 жыл бұрын
@@unityk555 Если для всех классов поведения добавить абстрактный класс, в котором написать метод обязывающий наследников отдавать название поведения для UI, это будет хорошим решением, или же это нарушение принципа разделения ответственности между логикой поведения и UI?
@unityk555
@unityk555 2 жыл бұрын
@UCPYxoPQIpqUPeQziPdq2pMw можно попробовать сделать отдельный класс для этой работы чтобы разделить ответственность, но с другой стороны зачем усложнять, можно сделать и как вы сказали
@user-zj9ir1tg2d
@user-zj9ir1tg2d 2 жыл бұрын
А если для интерфейсов поведения задать общий абстрактный интерфейс и хранить поведения в виде списка в классе животного, то и список строк для UI можно будет генерировать автоматически. Понятно, что многое упрощено ради акцентирования на основной теме видео, просто я недавно начал пограммировать, и хотелось бы уточнить, это правильный ход мыслей или же есть подходящий паттерн.
@unityk555
@unityk555 2 жыл бұрын
@@user-zj9ir1tg2d я вам скажу так, пробуйте и эксперементируйте, не нужно бояться сделать что-то не так, изучение програмирования это постоянные эксперименты. Вы попрробуйте и посмотрите, что получится. Если удобно, логически понятно и хорошо смотрится, то почему нет. Со стороны трудно сказать не вникая и не имея перед глазами код.
@TheMrTwish
@TheMrTwish Жыл бұрын
Похоже на говнокод, сорри)
@stastumanov4286
@stastumanov4286 2 жыл бұрын
А зачем в классе PanelController делегат private Delegate meth? Где он используется в коде? Спасибо.
Паттерн Фабрика в Unity
6:34
Unity Оk
Рет қаралды 5 М.
The CUTEST flower girl on YouTube (2019-2024)
00:10
Hungry FAM
Рет қаралды 4,8 МЛН
Running With Bigger And Bigger Feastables
00:17
MrBeast
Рет қаралды 168 МЛН
ROLLING DOWN
00:20
Natan por Aí
Рет қаралды 11 МЛН
Теоретическое собеседование в Unity
35:32
Change Behaviors with the Strategy Pattern - Unity and C#
8:07
One Wheel Studio
Рет қаралды 39 М.
ООП вопросы на юнити собеседовании
14:11
Максим Крюков
Рет қаралды 43 М.
Unity Junior Developer - Требования к кандидатам
11:49
Юный Юнитист
Рет қаралды 29 М.
C# Strategy Стратегия | Design Patterns
19:06
codaza
Рет қаралды 28 М.
Паттерн Command, Команда, Unity, C#, gamedev
20:00
Sergey Kazantsev
Рет қаралды 2,7 М.
Самый популярный паттерн в программировании!
6:57
The CUTEST flower girl on YouTube (2019-2024)
00:10
Hungry FAM
Рет қаралды 4,8 МЛН