好的,基本的,我有一个2d自上而下的统一游戏。我的游戏的前提是在你死之前收集尽可能多的硬币。我使用了玩家pref,这样当玩家获得最高分时,它将保存该人的分数。但是我遇到了一个问题,那就是;当你第一次玩游戏时,你收集硬币然后死亡,游戏然后保存你得到的最高点并将其显示在下降的面板上,但如果你再次玩游戏并且不收集任何硬币,那么游戏没有显示你得到的最高点,而是显示“0”。所以总结一下,如果我不收集任何硬币并且我死了,那么小组会下来并显示0作为我的高分。所以我必须得到至少1枚硬币才能显示出该人的最高分。这不是我想要的,想要我想要的是当玩家死亡时,不管你收集了多少硬币,它都会显示(在我的面板中)你得到的最高分。有谁知道怎么解决这个???谢谢。 这是我的代码:
public Text ScoreText;
public Text Highscoretext;
public AudioClip coinsound;
public int Score;
public int highScore = 0;
void Start ()
{
Score = 0;
SetScoreText ();
if (PlayerPrefs.HasKey ("Highscore"))
{
highScore = PlayerPrefs.GetInt("Highscore");
}
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag ("Pick Up"))
{
other.gameObject.SetActive (false);
Score = Score + 1;
SetScoreText ();
AudioSource.PlayClipAtPoint (coinsound, transform.position);
}
}
void SetScoreText ()
{
ScoreText.text = "Score: " + Score.ToString ();
Highscoretext.text = "Highscore" + highScore.ToString ();
}
谢谢。
答案 0 :(得分:0)
只需使用两个playerpref变量。当你收集硬币时,“ScoreThisPlaySesssion”和“HighestScoreEver”计数会在此会话中得分,当它高于“有史以来的最高分数”时,计算得到一个值的外翻时间。
void Start ()
{
Score = 0;
SetScoreText ();
if (PlayerPrefs.HasKey ("Highscore"))
{
highScore = PlayerPrefs.GetInt("Highscore");
}
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.CompareTag ("Pick Up"))
{
other.gameObject.SetActive (false);
Score = Score + 1;
SetScoreText ();
AudioSource.PlayClipAtPoint (coinsound, transform.position);
}
}
void SetScoreText ()
{
ScoreText.text = "Score: " + Score.ToString ();
if( PlayerPrefs.GetInt( "highestscoreever", 0 ) < Score )
PlayerPrefs.SetInt( "highestscoreever", Score );
Highscoretext.text = "Highscore" + PlayerPrefs.GetInt( "highestscoreever", 0 );
}