Прошло уже лет 25 со дня изобретения концепции Model-View-Controller, а споры и её модификации не завершаются по сей день. Хотя очевидно, что в изначальном виде эта концепция ужасна, не объектно-ориентирована и избыточна. А избыточно именно наличие контроллера, в то время как разделение визуализации и бизнес-логики является сердцем этой концепции, из-за чего и живет эта идея до сих пор. Но вопрос контроллера замыливается, хотя понятно, что на его месте должна быть реализация биндинга. Особенно, когда в игровом движке Unity это биндинг уже есть изначально, хотя и появился косвенно. Об этом подробно рассказываю в следующем видео.
0:00 Мы не будем делать полноценное MVC
1:40 Пример визуализации (View) и задачи
3:46 Специфика Unity
5:00 Создание класса визуализации PersonUI и префабов PersonSlot и PersonSlotExt
12:15 Биндинг реализуется через связь визуальных элементов в префабах со свойствами класса PersonUI
15:50 Пример создания объекта на сцене через префаб, заполнение свойств класса PersonUI из класс Person, выполняющего роль модели
17:00 Класс визуализации PersonUI агрегируется в классе модели Person как часть
18:00 Создаем реакцию на событие нажатия кнопки — метод OnClick()
24:00 В визуальном классе PersonUI создаем событие Click, которое произойдет в методе OnClick() в момент нажатия пользователем на кнопку
28:00 В невизуальном классе Person создаем метод ViewPersonInfo(), который синхронизирует свойства визуального класса с невизуальным
37:15 В классе Society (старшая в иерархии модель) агрегируем класс PersonUI, который будет использоваться для разных Person
45:10 Подписываемся на событие Click в классе Society
46:40 Добавляем параметр в делегат события, который позволит узнать Id персоны на которой кликнули (нажали кнопку)
54:20 Тестируем, исправляем баги
1:01:40 Заработало
1:06:00 Дополнительная доработка, рефакторинг и т.д.
ссылка на оригинал статьи https://habr.com/ru/post/721774/
Добавить комментарий