如何在unity中保存最少的时间?

问题描述 投票:0回答:1

我在unity 3d中制作一个迷宫游戏,完成关卡所需时间最少的就是高分。有没有办法使用Playerprefs来保存高分?脚本是用C#编写的。

c# unity3d time save
1个回答
0
投票

你可以先在你的 唤醒功能中的家庭脚本:

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

希望能帮到您!


0
投票

您可以使用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;
    }
}

0
投票

谢谢,我得到了答案!只是需要检查一下是否已经进行了第一轮。只是需要检查第一轮是否已经进行。

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


    }

}
© www.soinside.com 2019 - 2024. All rights reserved.