我在统一使用PlayerPrefs时出错(C#)在Android上
似乎没有保存它
脚本1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Scores : MonoBehaviour
{
public static int highscore;
public static int points;
public void Start()
{
}
public void Update()
{
highscore = PlayerPrefs.GetInt("highscore");
PlayerPrefs.SetInt("highscore", highscore);
PlayerPrefs.Save();
}
}
脚本2(使用它的部分)
void Update()
{
highscore = PlayerPrefs.GetInt("Highscore");
if (points > highscore)
{
highscore = points;
highscoretext.text = "Highscore: " + highscore;
highscoretext2.text = "Highscore: " + highscore;
}
[当我获得高分时,例如12,我死了,我回到主屏幕,然后回到游戏,并且重新启动应用程序时,高分与游戏相同。
现在设置高分时,您将获得当前的高分并将其存储在highscore
变量中。然后,您可以使用highscore
变量覆盖高分,从而有效地将高分设置为其自身。您实际上想要做的是检查当前分数是否大于最高分数,如果是,则将最高分数设置为当前分数。
highscore = PlayerPrefs.GetInt("highscore");
if(score > highscore)
{
PlayerPrefs.SetInt("highscore", score);
PlayerPrefs.Save();
}
代码无法正常工作的另一个原因是,您在脚本1中用小h拼写"highscore"
,但在脚本2中用大h拼写。
此外,每次更新都调用PlayerPrefs.GetInt
效率很低。您应该将它们设置为仅在需要获得或设置高分时才调用的函数。