Знакомство с примером проекта
Знакомство с примером проекта
К этому руководству прилагается пример проекта, на котором можно изучить ScriptableObject. Проект основан на классической механике игры с мячом и ракетками и наглядно показывает, как ScriptableObject может улучшить архитектуру проекта Unity. Применяя принципы SOLID и подходы, характерные для крупных проектов, вы увидите, как ScriptableObject помогает перестраивать код.
Пример проекта
Здесь вы увидите применение ScriptableObject на практике и лучше поймете, как с его помощью повысить эффективность разработки и улучшить организацию проектов.
В примере реализованы многие паттерны, рассмотренные в этом руководстве: - Контейнеры данных: общие настройки вынесены в ассеты ScriptableObject. Параметры игрового процесса и общие состояния хранятся в проекте как ассеты. Исходную компоновку уровня также можно изменить, заменив соответствующие ассеты ScriptableObject. - Расширяемые перечисления: пустые ассеты ScriptableObject выполняют роль перечислений для классификации игроков. - Объекты-делегаты: простой аудиоделегат показывает, как рандомизировать звуки столкновения мяча одной лишь заменой ScriptableObject. Цели также представлены ассетами ScriptableObject, которые подключаются к системе управления игрой для определения условий победы и поражения. - Каналы событий: паттерн «Наблюдатель» помогает настроить игровые события для UI, звука и подсчета очков. Разные объекты GameObject могут подписываться на разные каналы событий, словно настраиваясь на определенную радиостанцию. - Двойная сериализация: некоторые игровые данные, например компоновка уровня, хранятся в ScriptableObject для удобства работы в редакторе Unity, но при необходимости сохраняются в файлы JSON. Модифицированные вне Unity данные JSON затем можно использовать для воссоздания ScriptableObject, совместимого с исходным скриптом настройки. Разумеется, сама игра не является главной частью примера. Аркадную игру с мячом и ракетками можно написать гораздо меньшим объемом кода. Цель примера проекта в другом: показать, как ScriptableObject помогает создавать тестируемые и масштабируемые компоненты, с которыми удобно работать дизайнерам.