@spasiboivanu
frontend engineer at Sber.Tech

Где хранить состояние с параметрами для сцены?

Пример:
Где хранить состояние GameState.Pause, чтобы отслеживать его в скриптах и не делать ничего, если игрок в меню/паузе ?
Где хранить настройки игрока, клавиши, сенса мыши, громкость звука и тп ?
Где хранить параметры, скорость передвижения, начальное кол-во хп и тп?

Я видел различного рода GameManager как объект на сцене, но он получится каким-то монстром, если в него все засунуть, подскажите пожалуйста, какие подходы обычно применяются?
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
red-cat-fat
@red-cat-fat
Делаю игры
Вопрос паузы - это вопрос арихитектуры проекта.
Самый простой - завести статичную переменную "GameController.IsPause" или типа того. Но тут могут повсплывать куча багов, если из кучи разных мест будешь дёргать. Более умным подходом будет Singleton, в который стоит отправлять ещё и объект, который вызвал паузу для менеджмента коллизий, когда несколько объектов паузу вызывают, а один из них снимает. Т.е. чтобы не было ситуации, когда 2 объекта считают, что нужна пауза, но какой-то 3й эту паузу сбрасывал. Через Singleton-класс можно иметь доступ к всем объектам, которые хотят поставить паузу и определять их важность/приоритет. Но вообще синглтоны тоже не являются хорошей практикой сейчас, но для старта - самое оно.
А вопрос хранения параметров мобов и настроек -это StaticData - данные, которые заполняются 1 раз и больше не трогаются в самом геймплее. Для этого используют ScriptableObject'ы. Т.е. заводятся такие обжи с данными, которые ты заполняешь как монобехи в префабах, а потом отправляешь их в MonoBehaviour'ы, откуда читаешь данные и задаёшь требуемые параметры.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы