问题描述
我创建了这个无尽的跑步者,玩家必须躲避障碍才能获得积分和得分系统,我创建了一个得分管理器脚本,该脚本位于屏幕的后面。我可以使用UI在主屏幕上显示分数。但是我想在游戏场景中显示分数并在游戏场景中创建一个高分系统。还创建了公共静态文件来保存数据,即使它保存了我的数据并在游戏场景中显示了它,但是当我重新开始我的游戏时,分数并非从0开始,而是上一次游戏分数的延续。请帮助我,这是我的游戏的得分管理员脚本
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour
{
public static int score = 0;
public Text scoreDisplay;
public void Update()
{
scoreDisplay.text = score.ToString();
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.CompareTag("Obstacle"))
{
score++;
Debug.Log(score);
}
}
}
解决方法
您可能应该使用两个单独的变量来获得得分和最佳得分。分数变量是在您开始新游戏时会重置的变量,最佳分数应保存在游戏实例之间。为了在游戏实例之间保存int变量,您应该使用PlayerPrefs。代码应如下所示:
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour
{
//You don't need static for this variable
public int score = 0;
public Text scoreDisplay;
public void Update()
{
scoreDisplay.text = score.ToString();
}
void OnTriggerEnter2D(Collider2D other)
{
if(other.CompareTag("Obstacle"))
{
score++;
if(score > PlayerPrefs.GetInt("BestScore"))
PlayerPrefs.SetInt("BestScore",score);
Debug.Log(score);
}
}
}
现在,每次您需要获取最佳成绩时,您只需致电:
PlayerPrefs.GetInt("BestScore")
由于“ GetInt”是静态方法,因此无论范围如何,都可以检索该变量的值。
PS。我不确定您是否知道“静态”的真正含义,因此您应该查看文档。