PlayerScore以统一形式预设,在游戏屏幕上显示值为0



我正在尝试制作一个3d游戏,其中有两个场景,一个是游戏场景,另一个是GameOver场景。在游戏场景中,当玩家使用以下代码沿着z轴移动时,分数会实时计算:

using UnityEngine;
using UnityEngine.UI;
public class Score : MonoBehaviour
{
public Transform player;
public Text ScoreValue; //means, input is required, since a variable has been created
// Update is called once per frame
void Update()
{
ScoreValue.text = ((player.position.z-15)/10).ToString("0"); //ToString("0") is to remove all decimal points
PlayerPrefs.SetString("CurrentScore", ((player.position.z-15)/10).ToString("0"));
}
}

由于这是在游戏级别场景中,因此通过将玩家对象拖动到脚本中,根据玩家的移动来计算分数。当游戏结束时,使用场景管理将场景转换到GameOver屏幕。由于我想在Game-over场景中显示Game Level的分数,所以我使用预制来存储分数。

现在在Gameover场景中,我有一个文本对象,我想用游戏级别的分数的最终值更新它,所以我为它制作了一个脚本,如下所示:

using UnityEngine;
using UnityEngine.UI;
public class GameOverScore : MonoBehaviour
{
public Text OverScore;
void Update()
{  
OverScore.text = PlayerPrefs.GetFloat("CurrentScore").ToString();      
}
}

在这里,你必须拖动你想在关卡结束时不断更新的文本(分值(。游戏场景中的默认得分值设置为:-使用此选项,Game Over场景中的分数文本应更新为游戏场景的最终分数。但是,每当游戏结束并过渡到"游戏结束"场景时,"游戏结束》场景中的分数就会从:"-"变为:0。但当关卡结束时,分数不是0,有人能告诉我该做什么或使用什么代码,以便将Game Over场景中的值更新为Game level场景的最终值吗?如果你能帮我,我将不胜感激。

您在脚本一中将PlayerPrefs值设置为字符串在下一个脚本中,您正试图将PlayerPrefs作为Float。Unity单独存储这些值,即使您用相同的名称调用它们。

OverScore.text = PlayerPrefs.GetString("CurrentScore")

另请阅读:https://docs.unity3d.com/ScriptReference/PlayerPrefs.GetString.html

最新更新