重新开始游戏时重置分数

本文关键字:游戏 重新开始 | 更新日期: 2023-09-27 18:03:57

我正在制作一款VR游戏,其中只有一个关卡在主场景中,另一个场景是"结束",其中游戏的Over text分数可以通过Restart(重新加载主场景)和Exit按钮看到。

我的问题是,M使用这个脚本作为我的ScoreManager脚本如下所示。我也想在结束场景中使用这个分数,这是我使用PlayerPrefs

但主要的问题是,当在结束场景点击重启时,游戏重新加载主场景,但分数仍然与前一场游戏的值相同。我想把它设为0

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)删除了乐谱,但是什么也没发生

重新开始游戏时重置分数

你说你试过DeleteKey(int score),但它不起作用。您的代码没有在任何地方都有DeleteKey函数。如果您不知道如何使用该函数,下面的代码将向您展示如何使用它。如果你实际上知道如何使用它,但它不像你的问题中提到的那样工作,然后在它之后调用PlayerPrefs.Save()。这应该删除密钥并立即更新它。

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

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

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

问题是你仍然得到之前的分数,所以你需要通过将值重置为零来重置保存的值,通过使用以下行:

PlayerPrefs。SetInt("分数",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);
        }