Unity3D - значения playerpref изменяются на отрицательные, когда их более 2 миллиардов - PullRequest
0 голосов
/ 09 октября 2018

Я работаю над игрой бездействующего кликера, и все кажется идеальным, пока денежная стоимость не превысит 2 миллиарда, затем значение изменится на отрицательное.Это, ниже код сохраняет и загружает счет ..

public int LoadCoinsAmount()
{
    return PlayerPrefs.GetInt("COINS");
}

public void SaveCoinsAmount(int coins)
{
    PlayerPrefs.SetInt("COINS", coins);
}

.. Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Хотя сохранение в плавающие области является вариантом, упомянутым другими, я бы предложил использовать соответствующий тип, в данном случае long.Длинный имеет более высокую точность.

Для реализации:

public long LoadCoinsAmount()
{
    string coinString = PlayerPrefs.GetString("COINS");
    if (long.TryParse(coinString, out long result))
    {
        return result;
    }

    return 0;
}

public void SaveCoinsAmount(long coins)
{
    PlayerPrefs.SetString("COINS", coins.ToString());
}
0 голосов
/ 09 октября 2018

Как я уже прокомментировал, вам следует изменить тип переменной, в данном случае на float, который является единственным поддерживаемым в Unity для сохранения в PlayerPrefs.Таким образом, ваш код будет выглядеть так:

public float LoadCoinsAmount()
{
    return PlayerPrefs.GetFloat("COINS");
}

public void SaveCoinsAmount(float coins)
{
    PlayerPrefs.SetFloat("COINS", coins);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...