我在unity 3d中制作一个迷宫游戏,完成关卡所需时间最少的就是高分。有没有办法使用Playerprefs来保存高分?脚本是用C#编写的。
你可以先在你的 唤醒功能中的家庭脚本:
if(!PlayerPrefs.HasKey("HighestScore"))
{
PlayerPrefs.SetString("HighestScore", "keep some big number");
}
或 或者 可以使用 (最好是)
if(!PlayerPrefs.HasKey("HighestScore"))
{
PlayerPrefs.SetFloat("HighestScore", 100000f);
}
然后,当特定的关卡结束,你需要保存分数时,比较现有的PlayerPref和当前的Player分数。
例如对于浮点数
if(PlayerPrefs.GetFloat("HighestScore")>=current_score)
{
PlayerPrefs.SetFloat("HighestScore",current_score);
}
希望能帮到您!
您可以使用GetSet Assessors使之更容易。
public class GameManager: MonoBehavior {
...
public float HighScore {
get {
return PlayerPrefs.GetFloat("HIGHSCORE", 0);
}
set {
if(value > HighScore) {
PlayerPrefs.SetFloat("HIGHSCORE", value);
}
}
}
...
public void GameOver() {
HighScore = currentScore;
}
}
谢谢,我得到了答案!只是需要检查一下是否已经进行了第一轮。只是需要检查第一轮是否已经进行。
// Start is called before the first frame update
void Start()
{
HighScore = score;
WinScore.text = PlayerPrefs.GetFloat("HighScore").ToString();
}
// Update is called once per frame
void Update()
{
if(PlayerPrefs.GetFloat("HighScore") == 0f)
{
PlayerPrefs.SetFloat("HighScore", (float)HighScore);
WinScore.text = HighScore.ToString();
}
if (HighScore < PlayerPrefs.GetFloat("HighScore")){
PlayerPrefs.SetFloat("HighScoreEasy", (float)HighScore);
WinScore.text = HighScore.ToString();
}
}