PlayerPrefs没有在android上工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PlayerPrefs没有在android上工作相关的知识,希望对你有一定的参考价值。

我设法为我的android应用程序添加了一个分数和一个高分计数器。一切顺利,在Unity中运作良好。我构建我的应用程序,并希望在我的手机上测试它,但高分计数器,使用PlayerPrefs保存不会显示...有很多方法,但没有任何工作:(任何想法?

这是我的代码

 public class Score : MonoBehaviour {
 public Transform Charakter;
 public Text scoreText;
 public Text HighscoreText;

 public void Start()
 {
     HighscoreText.text = PlayerPrefs.GetString("HighScore");
     PlayerPrefs.Save();
 }

 private void Update()
 {
     scoreText.text = Charakter.position.x.ToString("0");

     int score = int.Parse(scoreText.text);
     int highscore = int.Parse(PlayerPrefs.GetString("HighScore"));

     if (score > highscore)
     {
         PlayerPrefs.SetString("HighScore", scoreText.text);
         PlayerPrefs.Save();
     }
 }

}

答案

你在没有默认值的情况下调用PlayerPrefs.GetString("HighScore"),所以如果尚未保存高分,它将返回""。由于您在保存之前检索了高分,因此您可能会遇到FormatException: Input string was not in a correct format.异常,因为它返回到无效输入的int.Parse()调用。您应该将该行切换为

int highscore = int.Parse(PlayerPrefs.GetString("HighScore", "0"));

更好的是,将所有内容存储为int,并将int转换为文本字符串,更安全。在本地跟踪得分和HighScore,这样您就不必每帧都从playerprefs中获取高分!

public class Score : MonoBehaviour
{
    public Transform Charakter;
    public Text scoreText;
    public Text HighscoreText;

    private int Score;
    private int HighScore;

    public void Start()
    {
        HighScore = PlayerPrefs.GetInt("HighScore", 0);
        HighScoreText.text = HighScore.ToString();
    }

    private void Update()
    {
        Score = Mathf.FloorToInt(Charakter.position.x);
        scoreText.text = Score.ToString();

        if (Score > HighScore)
        {
            HighScore = Score;
            HighScoreText.text = HighScore.ToString();
            PlayerPrefs.SetInt("HighScore", HighScore);
            PlayerPrefs.Save();
        }
    }
}

以上是关于PlayerPrefs没有在android上工作的主要内容,如果未能解决你的问题,请参考以下文章

Unity 3D 之Playerprefs

Unity PlayerPrefs 游戏存档

Unity 游戏存档 PlayerPrefs类的用法

[Unity计时器倒计时,当应用杀死Android时不起作用

PlayerPrefs.SetInt 和 .GetInt 具有不良影响

Unity PlayerPrefs类进行扩展(整个对象进行保存)