C# PlayerPref c的高分#

C# PlayerPref c的高分#,c#,unity3d,C#,Unity3d,所以我最近开始编码,这也是我在C#和Unity的第一个项目。所以我的问题可能很容易解决,可能会有一些严重的错误。所以我对想法或解释持开放态度 所以我试着制作一个脚本,将我的高分保存在PlayerRefs中,并在我播放2D无尽的跑步者时显示出来。(类似于镀铬的dinogame) “正常”的分数起作用了,但我似乎不能让高分出现。有谁知道我哪里出了错,或者我如何能轻松地做到 我的画布中已经有了一个图像+文本(正如我在网上看到的正常分数显示),并添加了它,下面是我的高分代码。 我无法在网上找到任何解释来

所以我最近开始编码,这也是我在C#和Unity的第一个项目。所以我的问题可能很容易解决,可能会有一些严重的错误。所以我对想法或解释持开放态度

所以我试着制作一个脚本,将我的高分保存在PlayerRefs中,并在我播放2D无尽的跑步者时显示出来。(类似于镀铬的dinogame) “正常”的分数起作用了,但我似乎不能让高分出现。有谁知道我哪里出了错,或者我如何能轻松地做到

我的画布中已经有了一个图像+文本(正如我在网上看到的正常分数显示),并添加了它,下面是我的高分代码。 我无法在网上找到任何解释来解决这个问题,如果你知道任何来源,我很乐意阅读并了解更多

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SocialPlatforms.Impl;
using UnityEngine.UI;

public class HighScore : MonoBehaviour
{
    public Text HighscoreText;

    
    private void Start()
    {
       
    }
  
    void StoreHighscore(int newHighscore)
    {
        int oldHighscore = PlayerPrefs.GetInt("Highscore",0);
        if (newHighscore > oldHighscore)
        {
            PlayerPrefs.SetInt("Highscore", newHighscore);
    
        }

    }

    void Update()
    {
     HighscoreText.text = PlayerPrefs.GetInt("newHighscore") + " Highscore";   
    }
}
我在GameOver脚本中添加了PlayerPref.Save()。在将场景重新加载为GameOver之前保存玩家参考

多谢各位

void Update()
    {
     HighscoreText.text = PlayerPrefs.GetInt("newHighscore") + " Highscore";   
    }
简单的错误是,您只是尝试使用键“newHighscore”获取PlayerPref,但该键不存在,因为在使用PlayerPrefs.SetInt时,您传递了键“Highscore”

要解决此问题,只需尝试获取正确的密钥:

void Update()
        {
         HighscoreText.text = PlayerPrefs.GetInt("Highscore") + " Highscore";   
        }
简单的错误是,您只是尝试使用键“newHighscore”获取PlayerPref,但该键不存在,因为在使用PlayerPrefs.SetInt时,您传递了键“Highscore”

要解决此问题,只需尝试获取正确的密钥:

void Update()
        {
         HighscoreText.text = PlayerPrefs.GetInt("Highscore") + " Highscore";   
        }

我认为问题来自
void Update()
您尝试获取
PlayerPrefs.GetInt(“newHighscore”)
,但您在上面设置了
Highscore
,而不是
newHighscore
。关于总体设计,您应该注意
void Update()
函数在游戏中的每一帧都会被调用(因此,您每秒更新文本大约60次,尽管它不会频繁更改。相反,您最好在
void StoreHighscore(int newHighscore)中正确分配新文本)
,当条件
newHighscore>oldheighscore
为真时。此外,无需使高分的存储变得如此复杂。您可以在
公共文本HighscoreText;
附近创建一个正态变量,但它将是
public int Highscore;
,请将其更新。您也可以将其设置为C属性,以代替e> StoreHighscore函数,您将拥有一个属性,当您
设置它时,该属性将透明地正确处理文本更新。我认为问题来自
无效更新()
您尝试获取
PlayerPrefs.GetInt(“newHighscore”)
,但是您在上面设置了
Highscore
,而不是
newHighscore
。关于整体设计,您应该注意的是
void Update()
函数在游戏中的每一帧都被调用(因此,您每秒更新文本大约60次,尽管它不会频繁更改。相反,您最好在
void StoreHighscore(int newHighscore)中正确分配新文本)
,当条件
newHighscore>oldheighscore
为真时。此外,无需使高分的存储变得如此复杂。您可以在
公共文本HighscoreText;
附近创建一个正态变量,但它将是
public int Highscore;
,请将其更新。您也可以将其设置为C属性,以代替e> StoreHighscore
函数,您将拥有一个属性,当您设置它时,该属性将透明地处理文本的更新。