Страница 1 из 1

Не сохраняется PlayerPrefs

СообщениеДобавлено: 23 апр 2017, 21:21
ChesterRose
Вот код
Синтаксис:
Используется csharp
public void Buy() {
                if (PlayerPrefs.GetInt ("gold") >= 100) {
                        dust += 100;
                       
                        PlayerPrefs.SetInt ("gold",  PlayerPrefs.GetInt("gold") - 100);
                        goldField.text = PlayerPrefs.GetInt ("gold").ToString ();
                        PlayerPrefs.SetInt ("dust", dust);
                        dustField.text = PlayerPrefs.GetInt ("dust").ToString ();
                        PlayerPrefs.Save ();
                }
        }
 

Переменная gold от которой отняли 100 не сохраняется. Приведу пример: У меня 100 gold, я вызываю метод buy. С переменной gold списывается 100 и она равняется 0. Но при увеличении gold на 10 она будет равняться не 10 а 110. Причем если после вызова метода Buy перезайти в приложение, то такого бага нет. Я подозреваю, что gold просто не сохраняется, хотя в методе Buy есть строка сохранения PlayerPrefs.Save ();

Re: Не сохраняется PlayerPrefs

СообщениеДобавлено: 24 апр 2017, 01:10
DbIMok
Добавьте логов. Например, допишите в if (...) {...} else Debug.Log("gold < 100"); чтобы знать, что запись не произошла. Маловероятно, что запись не работает, скорее дело в вашем алгоритме.

Re: Не сохраняется PlayerPrefs

СообщениеДобавлено: 25 апр 2017, 08:47
x-mas
Попробуй так:
Синтаксис:
Используется csharp
public void Buy() {
                if (PlayerPrefs.GetInt ("gold") >= 100) {
                        dust += 100;
                       
                        PlayerPrefs.SetInt ("gold",  PlayerPrefs.GetInt("gold") - 100);
                        PlayerPrefs.SetInt ("dust", dust);
                        PlayerPrefs.Save ();
                        goldField.text = PlayerPrefs.GetInt ("gold").ToString ();
                        //dustField.text = PlayerPrefs.GetInt ("dust").ToString ();
                       dustField.text = dust.ToString ();

                }
        }
 


И зачем постоянно считывать с реестра данные при изменении?! Не легче менять переменную в игре и потом сохранять?!
У тебя 3 считывания переменной gold, и одна запись, можно обойтись 1 считыванием и 1 записью.