重新开始游戏时重置分数
本文关键字:游戏 重新开始 | 更新日期: 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);
}