Система нацеливания для Unity
https://www.youtube.com/watch?v=aZanRrhBg-8
Прикольно, но мне не совсем нравится. Видео по сути про использование паттерна стратегия в контексте системы определения целей способностей. В целом хороший ролик про практическое применение паттерна стратегия но... 🙂
Паттерн Стратегия — это как иметь набор разных инструментов для одной задачи. Например, если вам нужно добраться до работы, вы можете выбрать машину, автобус или велосипед в зависимости от погоды, пробок или настроения. Стратегия позволяет легко менять способ решения задачи без переписывания кода — просто подставляете нужный вариант и получаете результат. Это удобно, когда у вас есть несколько способов сделать что-то, и вы хотите легко переключаться между ними. Я в целом с опаской отношусь к этому паттерну. Потому что очень соблазнительно всё сделать стратегией 🙂 Тоже самое кстати с фабрикой.
Чтобы пользоваться эффективно стратегией, фабрикой, декораторами нужно хорошо понимать концепцию композиции. Композиция — это принцип сборки сложных объектов из более простых компонентов, где объект-контейнер владеет своими составными частями и управляет их жизненным циклом. Как компьютер собирается из процессора, памяти и жёсткого диска, так и в программировании мы создаём сложные классы, включая в них экземпляры других классов, что позволяет строить гибкие и модульные системы, где каждый компонент отвечает за свою конкретную задачу, а их сочетание даёт новую функциональность.
Так вот. Я предпочитаю чаще основываться на декорировании нежели на стратегии. Разница этих двух паттернов в том, что декорирование дополняет функционал, а стратегия в свою очередь полностью его заменяет (или определяет). То есть базово у нас есть способность (это объект контейнер) у него может быть разный урон, эффекты и так далее, и разный набор определения целей. Потому что способность может одновременно скажем лечить нашего персонажа нанося урон в области на сумму нанесенного урона.
Но я отвлекся. Видео классное. И прикольную реализацию стратегии показывает. Но мне всегда режет глаз когда в реализации визуализация тесно перемешана с логикой. Я считаю, что базово игра должна играться хоть в консоли без привязки к Unity и любому другому фреймворку, а через композицию поверх должна навешиваться визуализация. А тут у нас визуализация в логических классах контейнерах и так далее. Просто видео не о том, поэтому на это можно закрыть глаза, но мне сложно 🙂
#новости
Post #1739
1.49K