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

Общие вопросы о Unity3D

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

Сообщение ChesterRose 23 апр 2017, 21:21

Вот код
Синтаксис:
Используется 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 ();
ChesterRose
UNец
 
Сообщения: 21
Зарегистрирован: 25 мар 2017, 21:27

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

Сообщение DbIMok 24 апр 2017, 01:10

Добавьте логов. Например, допишите в if (...) {...} else Debug.Log("gold < 100"); чтобы знать, что запись не произошла. Маловероятно, что запись не работает, скорее дело в вашем алгоритме.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

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

Сообщение x-mas 25 апр 2017, 08:47

Попробуй так:
Синтаксис:
Используется 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 записью.
Аватара пользователя
x-mas
UNец
 
Сообщения: 43
Зарегистрирован: 23 фев 2017, 12:51


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13