Всем, привет! 👋
Меня зовут Игорь @starkre22. Я - Senior Unity Developer с 5-ти летним опытом 🎮
Решил открыть свой канал по архитектуре на Unity, чтобы делиться идеями, мыслями и опытом. Цель канала — это, действительно, помочь разработчикам лучше проектировать сложные системы и более качественно выстраивать архитектуру в своих проектах
Таким образом, я буду постить сюда свои знания и полезные материалы, которые помогли мне в свое время двигаться по этому пути 🚀
В общем, добро пожаловать 🙌
Меня зовут Игорь @starkre22. Я - Senior Unity Developer с 5-ти летним опытом 🎮
Решил открыть свой канал по архитектуре на Unity, чтобы делиться идеями, мыслями и опытом. Цель канала — это, действительно, помочь разработчикам лучше проектировать сложные системы и более качественно выстраивать архитектуру в своих проектах
Таким образом, я буду постить сюда свои знания и полезные материалы, которые помогли мне в свое время двигаться по этому пути 🚀
В общем, добро пожаловать 🙌
👍14🔥8❤3
Model-View-Presenter — самый важный паттерн при проектировании игрового интерфейса.
В этом посте хотел бы поделиться, как использование паттерна MVP-Passive может ускорить разработку за счет переиспользования элементов интерфейса.
Вот как обычно устроен паттерн MVP (рис. 1):
Model — это слой, который представляет бизнес-логику приложения и данные (то что под капотом). Модель отвечает за получение и обработку данных, а также управление состоянием приложения.
View — этот слой отвечает за отображение данных и взаимодействие с пользователем. Представление отображает информацию из модели и передает пользовательские действия (например, нажатие кнопок) презентеру.
Presenter является посредником между моделью и представлением. Он получает данные от модели, форматирует их и передает представлению для отображения. Презентер также обрабатывает пользовательские действия от представления, выполняет необходимые операции и может обновлять модель
Очень часто такой паттерн хорошо заходит в мобильных играх, в которых есть товары с одинаковым пользовательским интерфейсом (иконка, цена, кнопка купить), но с разными способами оплаты. Таким образом, можно переиспользовать View и сделать под каждый тип товара свой Presenter, который будет обрабатывать покупку и обновлять состояние View.
Например, в игре можно покупать различные вещи, сундучки и временные усиления. Применение паттерна MVP-Passive для сундуков скину постом ниже
Аналогично по такому же принципу можно сделать презентер для временных усилений, если они например, покупаются за другую валюту или реал, при этом ProductView и префаб карточки будет переиспользоваться.
В результате паттерн MVP позволяет:
1. Переиспользовать логику представления
2. Разрабатывать фичу параллельно в команде как бизнес-логику, так и интерфейс
3. За счет разделения классов по ответственностям такой код легче читать и поддерживать
Надеюсь, было полезно😉
В этом посте хотел бы поделиться, как использование паттерна MVP-Passive может ускорить разработку за счет переиспользования элементов интерфейса.
Вот как обычно устроен паттерн MVP (рис. 1):
Model — это слой, который представляет бизнес-логику приложения и данные (то что под капотом). Модель отвечает за получение и обработку данных, а также управление состоянием приложения.
View — этот слой отвечает за отображение данных и взаимодействие с пользователем. Представление отображает информацию из модели и передает пользовательские действия (например, нажатие кнопок) презентеру.
Presenter является посредником между моделью и представлением. Он получает данные от модели, форматирует их и передает представлению для отображения. Презентер также обрабатывает пользовательские действия от представления, выполняет необходимые операции и может обновлять модель
Очень часто такой паттерн хорошо заходит в мобильных играх, в которых есть товары с одинаковым пользовательским интерфейсом (иконка, цена, кнопка купить), но с разными способами оплаты. Таким образом, можно переиспользовать View и сделать под каждый тип товара свой Presenter, который будет обрабатывать покупку и обновлять состояние View.
Например, в игре можно покупать различные вещи, сундучки и временные усиления. Применение паттерна MVP-Passive для сундуков скину постом ниже
Аналогично по такому же принципу можно сделать презентер для временных усилений, если они например, покупаются за другую валюту или реал, при этом ProductView и префаб карточки будет переиспользоваться.
В результате паттерн MVP позволяет:
1. Переиспользовать логику представления
2. Разрабатывать фичу параллельно в команде как бизнес-логику, так и интерфейс
3. За счет разделения классов по ответственностям такой код легче читать и поддерживать
Надеюсь, было полезно😉
👍10❤2🔥2🥰2