在重启游戏时重置分数

时间:2016-08-25 22:21:59

标签: c# unity3d

我正在制作VR游戏,其中只有一个级别在主场景上,而另一个场景是"结束"使用Restart(重新加载主场景)和Exit Button可以看到游戏Over text Score。

我的问题是,M使用此脚本作为我在下面给出的ScoreManager脚本。我也希望在结束场景中获得此分数,并使用PlayerPrefs

进行操作

但主要问题是,当在结束场景点击重新启动时,游戏会重新加载主场景,但该分数仍具有与之前游戏相同的值。我希望它设置为零。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

namespace CompleteProject
{
    public class ScoreManager : MonoBehaviour
    {
        public static int score ;        // The player's score.
        Text text;                      // Reference to the Text component.

        void Awake()
        {
            // Set up the reference.
            text = GetComponent<Text>();
            score = 0;
            score = PlayerPrefs.GetInt("Score");
        }

        void Update ()
        {

            // Set the displayed text to be the word "Score" followed by the score value.
            text.text = "Score: " + score;
            PlayerPrefs.SetInt("Score", score);

        }
    }
}

我还使用DeleteKey(string)删除了分数,但没有发生任何事情。

2 个答案:

答案 0 :(得分:1)

你说你试过DeleteKey(int score)但它没有用。您的代码在任何地方都有DeleteKey功能。如果您不知道如何使用该功能,下面的代码将向您展示如何使用它。如果您确实知道如何使用它,但它在您的问题中没有提到,请在其后面调用PlayerPrefs.Save()。这应该删除密钥并立即更新。

要在每场比赛后重置分数,请将代码放入OnDisable()功能。

void OnDisable()
{
    PlayerPrefs.DeleteKey("Score");
    PlayerPrefs.Save();
}

要在游戏开始时重置它,请像在score函数中一样获取当前Awake(),然后将上面的函数更改为OnEnable()

答案 1 :(得分:1)

问题仍然存在,您需要获得分数的上一个会话,因此您需要使用以下行将值重置为零来重置保存的值:

PlayerPrefs.SetInt(“ Score”,0);

 public static int score ;       
        Text text;             
        void Start(){

            PlayerPrefs.SetInt("Score", 0);
            // Set up the reference.
            text = GetComponent<Text>();
            score = 0;
            score = PlayerPrefs.GetInt("Score",0);
        }
        void Update ()
        {

            // Set the displayed text to be the word "Score" followed by the score value.
            text.text = "Score: " + score;
            PlayerPrefs.SetInt("Score", score);

        }