Довольно уверен, что значение Level
назначено правильно. Ну, не правильно , но давайте рассмотрим проблему позже.
Проблема в том, что level
значение в классе Data
никогда не назначается. Вы должны инициализировать его с помощью конструктора, например:
public Data(int level)
{
this.level = level;
}
Или
public void Save()
{
data.level = level;
...
Без присваивания ваше значение level
всегда будет иметь значение 0
. Может быть, умный Intelisense уже заметил бы вас, сказав value Level is assigned, but never used.
О проблеме, о которой я упоминал выше, ПОЧЕМУ вы это делаете,
GameObject.Find("SAVELOADSYSTEM").GetComponent<LoadManager>().Level = Level;
Похоже, вы уже объявили LoadManager
с одноэлементным шаблоном, поэтому нет необходимости делать это. Если LoadManager
компонент правильно подключен к GameObject, достаточно просто сделать
LoadManager.instance.Level = Level;
.
Unity GameObject.Find()
- сверхтяжелая функция, так как она грубо форсирует имя всего игрового объекта в сцене. Назвать его один раз было бы хорошо, но положить эту вещь в Update()
? Что ж, делать грубую силу 60 раз в секунду - не очень хорошая ситуация. Поэтому рекомендуется использовать GameObject.Find()
, только в Start()
, Awake()
или при инициализации класса.