在Unity2d中保存并加载高分

时间:2015-09-08 19:11:02

标签: c# android unity3d-2dtools

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

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;

        }} }

"游戏结束"当此代码发生时,它等于true:

void OnCollisionEnter2D (Collision2D col) {

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

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

    }

我想要的是此时(当对象碰撞且游戏结束时为真),要保存的分数,然后加载场景上的游戏。如何在游戏中保存得分,然后将其加载到场景中的游戏以及保存的高分?

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式执行此操作,如果您只保留该会话的分数,则最明显的两种方法是将其存储在静态类辛格尔顿即可。无论场景加载如何,这些类都会持续很长时间,因此请注意如何管理其中的信息。

静态类实现的一个例子是:

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

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

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

我希望这有帮助!