Unity3D:HighScore

时间:2016-05-01 14:31:41

标签: unity3d

好的,基本的,我有一个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 ();
}

谢谢。

1 个答案:

答案 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 );
 }