PlayerPrefs not working on android



我设法在我的Android应用程序中添加了一个分数和高分计数器。一切顺利,团结起来很好。我构建了我的应用程序,想在手机上测试它,但是使用PlayerPrefs保存的HighScore Counter不会显示...那里有很多方法,但没有任何效用:(有任何想法吗?

这是我的代码

 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!

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();
        }
    }
}

最新更新