Я работал над созданием магазина для своей игры. В игре пользователь будет собирать монеты и иметь возможность использовать монеты для покупок в магазине.
Поэтому я следовал руководству Unity по сохранению и загрузке постоянных данных. Поскольку пользователь не должен терять свои монеты, когда они выходят из игры.
У меня проблема в том, что когда пользователь снова открывает игру и собирает новые монеты, он отменяет сохраненную сумму из своего игрового процесса.
Это моя функция сохранения для сохранения собранных монет из игрового процесса:
public void Save() {
coins = Coins.value;
Debug.Log("Saving");
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath + "/coins.dat");
PlayerData data = new PlayerData();
data.coins = coins;
bf.Serialize(file, data);
file.Close();
}
Постоянство работает, я имею в виду, что если пользователь соберет 10 монет, а затем перезапустит игру, он сможет увидеть количество 10 монет. Но как только он снова сыграет и соберет 5 монет, он увидит 5, а не 15.
Я попытался увеличить, например:
data.coins += coins;
Но это не сработало ..
Это способ каким-то образом загрузить сумму перед использованием моего метода сохранения. Итак, каким-то образом получить значение data.coins из метода load, а затем добавить значение в Coins.value из метода save?
Мой метод загрузки выглядит следующим образом:
if (File.Exists(Application.persistentDataPath + "/coins.dat"))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(Application.persistentDataPath + "/coins.dat", FileMode.Open);
PlayerData data = (PlayerData)bf.Deserialize(file);
file.Close();
coins = data.coins;
}
}
}
[Serializable]
class PlayerData {
public int coins;
}