0

使用此代码,我总是得到当前分数,而我想保存高分我尝试一切来解决它,但一无所获。

我想保存 highscore 的 hgscr ,当我用 loadPlayer() 调用时,我想与当前得分的 topScore 进行比较。毕竟,我将当前分数和高分数据称为我的分数页面。

播放器页面

  if (isStarted == true)
         {
 
             if (rb2d.velocity.y > 0 && transform.position.y > topScore)
             {
                 topScore = transform.position.y;  // Current Score
             }
 
            
             scoreText.text = "Score: " + Mathf.Round(topScore).ToString();         
             
         }
         
         PlayerData data = SaveSystem.LoadPlayer();
         if (topScore > data.hgscrp) // current score  >  where I get highscore data from save page
         {
             hgscr = topScore;  // save highs score for display on score page and compare current score after game restart 
             scsc = Mathf.Round(topScore).ToString();      // save current score for display on score page     
             SaveSystem.SavePlayer(this);
             
         }
         else
         {
             scsc = Mathf.Round(topScore).ToString();
             SaveSystem.SavePlayer(this);
            
         }
 
 
     }

保存页面

 public string cscore;
     public float hgscrp;
     public PlayerData (Controller player)
 
     {
 
         cscore = player.scsc;
         hgscrp = player.hgscr;
     }
4

1 回答 1

0

而不是使用保存/加载,试试这个:

unity有一个PlayerPrefs类,它允许您保存通过重新启动游戏或切换场景保持不变的变量,所以如果您使用:

PlayerPrefs.SetFloat("VARIABLE NAME", number);

如果您想保存高核心,这是完美的并访问保存的变量使用:

PlayerPrefs.GetFloat("VARIABLE NAME");

我希望这有效,它对我有用:)

于 2020-10-27T21:57:34.050 回答