如何统一显示游戏中的得分和高分?

问题描述

我创建了这个无尽的跑步者,玩家必须躲避障碍才能获得积分和得分系统,我创建了一个得分管理器脚本,该脚本位于屏幕的后面。我可以使用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。我不确定您是否知道“静态”的真正含义,因此您应该查看文档。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...