КЛАССЫ МОДЕЛИ

Основная задача в написании классов модели – поддерживать изолированность от движка. Изолированная модель упрощает работу с сохранениями, обеспечивает высокую расширяемость и позволяет относительно беспрепятственно перейти на новую версию движка или сменить его, при необходимости.

При реализации модели соблюдайте паттерн MVC и следуйте парадигме ООП:

Инкапсулируйте внутреннюю логику классов, ставьте модификаторы доступа private или protected
• Не вызывайте отрисовку из классов модели
Используйте конструкции event Action для сообщения классам отрисовки об изменениях в параметрах
• Придерживайтесь паттерна MVC
• Придерживайтесь парадигмы ООП

Проще говоря – написание модели – это реализация обычных сущностей на языке C#. Их реализация на Unity, GoDot, MonoGame и других фреймворках практически не отличается от реализации на .NET или .NET Core. Правильно написанная модель может быть быстро и с минимальными усилиями перенесена на другой движок.


В нашей игре про изменение числа класс модели один – «ModelNumber». Он просто хранит информацию о текущем числе и вызывает событие, сообщает классам отрисовки, что значение изменилось.

Логика классов модели зачастую бывает намного, во много раз сложнее. Но в паттерне MVC остается неизменным способ сообщения об изменении значения – конструкция event Action.

Важные советы при реализации классов модели:
• Сначала делайте все поля, свойства, методы приватными с модификатором доступа private
• Сразу подумайте над тем, как вы будете сохранять значения в вашей игре
Наследуйтесь от базовых классов движка (MonoBehaviour, GameObject и т.д.) только при необходимости.
• На каждый модельный MonoBehaviour создайте чистый C# класс, который будет хранить все данные для их записи в файл сохранения. Лучше сохранять не весь MonoBehaviour, а только изменяемые поля.
Используйте интерфейсы вместо абстрактных классов, если не знаете, что выбрать – это значительно упростит разработку и даст вам возможность создавать сложные, многоступенчатые сущности.

ЗАЧЕМ?

Для того, чтобы вы могли быстро писать и переписывать код.