C# PlayerPref c的高分#
所以我最近开始编码,这也是我在C#和Unity的第一个项目。所以我的问题可能很容易解决,可能会有一些严重的错误。所以我对想法或解释持开放态度 所以我试着制作一个脚本,将我的高分保存在PlayerRefs中,并在我播放2D无尽的跑步者时显示出来。(类似于镀铬的dinogame) “正常”的分数起作用了,但我似乎不能让高分出现。有谁知道我哪里出了错,或者我如何能轻松地做到 我的画布中已经有了一个图像+文本(正如我在网上看到的正常分数显示),并添加了它,下面是我的高分代码。 我无法在网上找到任何解释来解决这个问题,如果你知道任何来源,我很乐意阅读并了解更多C# PlayerPref c的高分#,c#,unity3d,C#,Unity3d,所以我最近开始编码,这也是我在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属性,以代替设置它时,该属性将透明地正确处理文本更新。我认为问题来自无效更新()
您尝试获取PlayerPrefs.GetInt(“newHighscore”)
,但是您在上面设置了Highscore
,而不是newHighscore
。关于整体设计,您应该注意的是void Update()
函数在游戏中的每一帧都被调用(因此,您每秒更新文本大约60次,尽管它不会频繁更改。相反,您最好在void StoreHighscore(int newHighscore)中正确分配新文本)
,当条件newHighscore>oldheighscore
为真时。此外,无需使高分的存储变得如此复杂。您可以在公共文本HighscoreText;
附近创建一个正态变量,但它将是public int Highscore;
,请将其更新。您也可以将其设置为C属性,以代替e> StoreHighscore
函数,您将拥有一个属性,当您设置它时,该属性将透明地处理文本的更新。