在 Unity2d 中保存和加载高分

Saving and loading high scores in Unity2d

到目前为止我所做的是在游戏中设置一个每秒增加的分数,让分数在游戏场景中显示,然后如果分数大于则将最高分设置为等于分数高分。到目前为止,这是我的代码:

bool gameOver;
    public Text scoreText;
    public Text highScoreText;
    int score;
    int highScore;

    // Use this for initialization
    void Start () {
        score = 0;
        highScore = 0;
        InvokeRepeating ("scoreUpdate", 1.0f, 1.0f);
        gameOver = false;
    }

    // Update is called once per frame
    void Update () {
        scoreText.text = "★" + score;
        highScoreText.text = "★" + highScore; 
    }

    public void gameOverActivated() {
        gameOver = true; 
        if (score > highScore) {
            highScore = score; 
        }
        PlayerPrefs.SetInt("score", score);
        PlayerPrefs.Save();

        PlayerPrefs.SetInt("highScore", highScore);
        PlayerPrefs.Save();
    }

void scoreUpdate() {
    if (!gameOver) {
        score += 1;

        }} }

"game over" 出现此代码时等于 true:

void OnCollisionEnter2D (Collision2D col) {

        if (col.gameObject.tag == "enemyPlanet") {

            ui.gameOverActivated ();
            Destroy (gameObject);
            Application.LoadLevel ("gameOverScene2");
        }

    }

我想要的是在这一点上(当对象发生碰撞并且游戏结束为真时)保存分数,然后加载游戏结束场景。如何在游戏结束时保存分数,然后将其与保存的高分一起加载到游戏结束场景中??

有多种方法可以做到这一点,如果您只保留该会话的分数,最明显的两种方法是将其存储在 Static Class 中 单例 。无论场景加载如何,这些 class 都会持续存在您需要的时间,因此请谨慎管理其中的信息。

静态 class 实现的一个示例是:

public static class HighScoreManager
{
    public static int HighScore { get; private set; }

    public static void UpdateHighScore(int value)
    {
        HighScore = value;
    }
}

如果您希望将数据保留更长时间,则需要查看 this

希望对您有所帮助!