Как стать автором
Обновить
5
0
Ефремов Павел @vildafaust

Разработчик мобильных игр

Отправить сообщение
Доброго времени суток. Странная реализация паттерна MVC. Почему моделью выступает ScriptableObject? ScriptableObject — статичный контейнер хранения данных. Например spawnpoints. Я бы еще понял если бы была вложенная структура Model внутри, которой лежит статичный Description = scriptableObject, который реализует лишь Get.
Пример простой: есть модель у нее есть дискрипшн. В моделе есть поле currentHp, который при инциализации модели заполняется из дескрипшена, в коротом MaxHp.
Иначе эта реализация может спокойно зачистить все поля scriptableObject`а.
+ почему controller выполняет роль view? Зачем он нужен если он напрямую влезает в данные view.
Паттерн MVC прост. Который диктует, что model и view не имеют доступа друг к другу. И лишь контроллер выступает прослойкой, которая связывает view и model.
Доброго времени суток. Странная реализация паттерна MVC. Почему моделью выступает ScriptableObject? ScriptableObject — статичный контейнер хранения данных. Например spawnpoints. Я бы еще понял если бы была вложенная структура Model внутри, которой лежит статичный Description = scriptableObject, который реализует лишь Get.
Пример простой: есть модель у нее есть дискрипшн. В моделе есть поле currentHp, который при инциализации модели заполняется из дескрипшена, в коротом MaxHp.
Иначе эта реализация может спокойно зачистить все поля scriptableObject`а.
+ почему controller выполняет роль view? Зачем он нужен если он напрямую влезает в данные view.
Паттерн MVC прост. Который диктует, что model и view не имеют доступа друг к другу. И лишь контроллер выступает прослойкой, которая связывает view и model.
if (nameMob == "ogre")
{
    return new MobModel(descriptions.ListOgre[level]);
}

if (nameMob == "troll")
{
    return new MobModel(descriptions.ListTroll[level]);
}

тоже самое на swich


switch (nameMob)
        {
            case "ogre":
                return new MobModel(descriptions.ListOgre[level]);

            case "troll":
                return new MobModel(descriptions.ListTroll[level]);
        }

Не стоит забывать, что pattern лишь нечто каноническое, они лишь помогают выполнять работу объектов наиболее удобным и оптимальным способом, но и способов этих много. Это просто порождение других классов через нужные условия, а метод может быть реализован хоть абстрактной стандартной фабрикой.

Тогда потеряется смысл вообще разделять классы. И мы получим спагети код
Намного проще — да. Но если тебе надо сохранять данные условно? Придется лезть в каждую View такую и сохранять параметры. Происходит перемешивание обязанностей + нельзя контролировать. Что если я хочу ее отключить? Кто будет управлять этим
Я бы не согласился. В данном Controller можно реализовать методы Enable и Disable, в которых можно привязывать и отвязывать события. Тем самым мы можем не уничтожать объект, а контролировать его. Нужен он нам сейчас или нет. Например реализовав pull manager для таких объектов, и отключаться в Disable у view Active тем самым скрывая, но не уничтожая
Имхо конечно, но view лишь обновляет Health, логично что происходит Change, а не Set. за установку параметров отвечает лишь Model.
Доброго времени суток. Я прошу заметить, что в данной реализации все данные, что нужны Model — например возьмем машину. Много разных видов (например разные скорости). Простая реализация создаем CarModel и CarDiscription, который в свою очередь является [Serialize]. Тогда мы можем создать Scriptable object, в котором создадим List и уже в Inspector будем настраивать каждый дискрипшн, а Model будет хранить лишь нужный нам дескрипшн.

Информация

В рейтинге
Не участвует
Откуда
Волгоград, Волгоградская обл., Россия
Зарегистрирован
Активность