Как обращаться из одного скрипта в другой с помощью переменных без потери информации о ней в unity C#?

Доброго времени суток!

Я соединил два скрипта с помощью переменных.

В первом скрипте: [SerializeField] public static float crystalCounter = 0;

И во втором: Spawner.crystalCounter -= 1;

Второй скрипт изменяет значение crystalCounter на -1.

Так вот [SerializeField] перестал работать из-за public static и в Unity не отображается! Не отображается crystalCounter

На что можно заменить public static ?


Ответы (1 шт):

Автор решения: singletonsEnjoyer

Фух, мой звёздный час. Пока ты новичок в программировании, вообще не советую использовать модификатор static и паттерн Singleton. Вместо этого пиши следующим образом:

public float crystalCounter = 0;

Это всё ещё не лучший вариант, потому-что безопаснее использовать свойства, но о них узнаешь позже. Затем в классе Spawner объяви поле типа( то есть названия класса) первого скрипта.

[SerializeField] private ScriptName _scriptName;

В инспекторе перенеси объект, в котором находится первый скрипт прямо в это поле(так же, как ты делал с Crystal). И.... вуаля, теперь ты можешь использовать все доступные методы и поля другого класса, и тебе не придётся в дальнейшем страдать из-за модификатора static.

_scriptName.crystalCounter -= 1;
→ Ссылка