Show / Hide Table of Contents

Введение

Как известно, все компоненты Unity наследуются от класса UnityEngine.Object для добавления к ним определённого функционала. В ходе разработки данной игры возникла потребность расширения части этого функционала, например, нужно было добавлять объекты в пул вместо их уничтожения, а затем переопределить логику их создания, основываясь на наличии либо отсутствии объекта в пуле.

Также была потребность в централизации управления данными объекта - необходимо было определить методы чтения и записи данных объекта в файл.

Для данных целей были созданы классы BaseDefense.Object (далее Object) и Objects Pool.

Все игровые объекты, имеющие жизненный цикл, наследуются от класса Object. Подробнее о жизненном цикле объектов и иерархии наследований см. Жизненный цикл объектов и Иерархия наследований

Чтобы у классов была возможность взаимодействия между собой, им нужно знать друг о друге, т.е. класс А должен иметь в качестве зависимости класс Б, чтобы вызывать его методы, читать данные из свойств и т.д. Для этой цели в проекте используется DI-фреймвор Zenject. Подробнее об использовании Zenject в Base Defense см. Зависимости

Иногда классам необходимо реагировать на определённые игровые события (например, смерть игрока). Для того, чтобы не связывать множество классов друг с другом напрямую через Zenject, в проекте используется реализация паттерна Observer Broadcast Messages

In This Article
Back to top Generated by DocFX