Основная задача в написании классов модели – поддерживать изолированность от движка. Изолированная модель упрощает работу с сохранениями, обеспечивает высокую расширяемость и позволяет относительно беспрепятственно перейти на новую версию движка или сменить его, при необходимости.
При реализации модели соблюдайте паттерн MVC и следуйте парадигме ООП:
• Инкапсулируйте внутреннюю логику классов, ставьте модификаторы доступа private или protected
• Не вызывайте отрисовку из классов модели
• Используйте конструкции event Action для сообщения классам отрисовки об изменениях в параметрах
• Придерживайтесь паттерна MVC
• Придерживайтесь парадигмы ООП
Проще говоря – написание модели – это реализация обычных сущностей на языке C#. Их реализация на Unity, GoDot, MonoGame и других фреймворках практически не отличается от реализации на .NET или .NET Core. Правильно написанная модель может быть быстро и с минимальными усилиями перенесена на другой движок.
В нашей игре про изменение числа класс модели один – «ModelNumber». Он просто хранит информацию о текущем числе и вызывает событие, сообщает классам отрисовки, что значение изменилось.
Логика классов модели зачастую бывает намного, во много раз сложнее. Но в паттерне MVC остается неизменным способ сообщения об изменении значения – конструкция event Action.
Важные советы при реализации классов модели:
• Сначала делайте все поля, свойства, методы приватными с модификатором доступа private
• Сразу подумайте над тем, как вы будете сохранять значения в вашей игре
• Наследуйтесь от базовых классов движка (MonoBehaviour, GameObject и т.д.) только при необходимости.
• На каждый модельный MonoBehaviour создайте чистый C# класс, который будет хранить все данные для их записи в файл сохранения. Лучше сохранять не весь MonoBehaviour, а только изменяемые поля.
• Используйте интерфейсы вместо абстрактных классов, если не знаете, что выбрать – это значительно упростит разработку и даст вам возможность создавать сложные, многоступенчатые сущности.
Для того, чтобы вы могли быстро писать и переписывать код.
Вариант 2 - игра будет работать неправильно.
Вариант 3 - вам будет очень тяжело писать код игры.

