@vopross

Есть ли в юнити глобальные переменные?

Решил посмотреть, что за зверь этот юнити, создал сцену, персонажа, динамический спавн объектов и т.д, но встала необходимость в глобальных переменных. Как их реализовать и вообще это правильный путь? В переменныз хочу хранить такие параметры как скорость, состояние персонада и т.д => нужно из любого скрипта иметь доступ к ним и возможно редактировать. Как правиль это реализовать?
  • Вопрос задан
  • 4983 просмотра
Решения вопроса 1
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
В юнити, а точнее в c# нет глобальных переменных. Существуют статические переменные и константы, которыми можно пользоваться для хранения глобальной информации, но весьма сомнительно, что вам нужна действительно глобальная доступность. Скорее всего, у вас есть несколько классов, которые из-за неправильного разделения обязанностей вынуждены залезать друг в друга для синхронизации состояния. Это решается только переорганизацией кода, глобальные переменные и синглтоны дело только усугубят.
В контексте юнити для разрешения зависимостей хорошо работает техника dependency injection, которая реализована во многих фреймворках, например в Zenject. Помимо этого, в юнити есть ScriptableObject, который очень удобен для хранения конфигов, позволяет легко передавать их между классами и редактировать в рантайме. Думаю, этих двух вещей должно быть достаточно для начала, остальное придёт с практикой.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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