Как обращаться из одного скрипта в другой с помощью переменных без потери информации о ней в unity C#?
Доброго времени суток!
Я соединил два скрипта с помощью переменных.
В первом скрипте: [SerializeField] public static float crystalCounter = 0;
И во втором: Spawner.crystalCounter -= 1;
Второй скрипт изменяет значение crystalCounter на -1.
Так вот [SerializeField] перестал работать из-за public static и в Unity не отображается!

На что можно заменить public static ?
Ответы (1 шт):
Фух, мой звёздный час. Пока ты новичок в программировании, вообще не советую использовать модификатор static и паттерн Singleton. Вместо этого пиши следующим образом:
public float crystalCounter = 0;
Это всё ещё не лучший вариант, потому-что безопаснее использовать свойства, но о них узнаешь позже. Затем в классе Spawner объяви поле типа( то есть названия класса) первого скрипта.
[SerializeField] private ScriptName _scriptName;
В инспекторе перенеси объект, в котором находится первый скрипт прямо в это поле(так же, как ты делал с Crystal). И.... вуаля, теперь ты можешь использовать все доступные методы и поля другого класса, и тебе не придётся в дальнейшем страдать из-за модификатора static.
_scriptName.crystalCounter -= 1;