Прототип игры в стиле Arkanoid
Сделано на Unity 2022.3.56f1
Для запуска игры необходимо запустить сцену Game. Управлять платформой можно с помощью стрелок влево и вправо.
При реализации был по максимуму задействован компонентно-ориентированный подход. Для прототипа этого вполне достаточно и придумывать что-то более сложное было бы излишеством. Компоненты проектировались как можно более атомарными, чтобы их можно было повторно использовать, а также чтобы код было проще читать и править.
Некоторые компоненты имеют прямые зависимости от других компонентов, что, опять же, нормально для прототипа. но на реальном проекте может вызвать трудности при расширении кода. В этом случае следует привести компоненты к зависимостям от абстракций (например, спрятать за абстракциями сервисы). Прекрасно, если вдобавок получится прикрутить DI, чтобы не приходилось каждый раз прокидывать зависимости руками через Inspector, а также чтобы избавить от наследования от MonoBehaviour классы, которым это совершенно не нужно.
UI реализован довольно примитивно - это заранее расставленные на сцене экраны. Никакой анимации и прочих красивостей - это нормально для прототипа (как перестать повторять это?), но в реальных условиях стоило бы создать для этого высокоуровневые компоненты, в том числе для того, чтобы, при нажатии на закрытие экрана, сперва полностью проигрывалась анимация, и только потом перезапускалась игра.
Также стоило бы уйти от предварительной расстановки экранов на сцене, так как это не очень хорошо масштабируется. Можно, например, реализовать сервис, который будет инстанцировать нужный экран.
Отсутствует какая-либо возможность удобно конфигурировать игру, но по-хорошему она должна быть - для настройки уровней, скорости мяча/платформы и прочего. В идеале предусмотреть конфигурацию из разных источников (например, из ScriptableObject).
Конец игры подвязан на UnityEvent-ы, но на реальном проекте стоило бы создать специальные компоненты для отслеживания состояния игры и обработки его изменений.