大家好我是团结一致并需要帮助,下面是我当前得分和最高分的代码,目前的分数显示在游戏菜单中,但最高分总是0。
using UnityEngine;
使用System.Collections;
公共类SetScore:MonoBehaviour {
public GameObject newRecordText;
public GUIText thisScoreObj ;
public GUIText thisHighScoreObj ;
void Start () {
int score = PlayerPrefs.GetInt ("currentScore");
int highScoreOld = PlayerPrefs.GetInt ("highestScoreOld");
newRecordText.SetActive (false);
if (score > highScoreOld) {
newRecordText.SetActive(true);
}
thisScoreObj.text = "" + score;
thisHighScoreObj.text = "" + highScoreOld;
AdjustFontSize ();
}
void AdjustFontSize() {
if(Screen.height > 480 && Screen.width > 800){
thisScoreObj.fontSize = 60;
thisHighScoreObj.fontSize = 60;
}
else if(Screen.height <= 480 && Screen.width <= 800) {
thisScoreObj.fontSize = 40;
thisHighScoreObj.fontSize = 40;
}
}
}
void start() {
if (PlayerPrefs.HasKey ("highestScore")) {
highestScore = PlayerPrefs.GetInt ("highestScore");
highestScoreOld = highestScore;
} else {
highestScore = 0;
highestScoreOld = highestScore;
}
}
void gameOver(int score) {
//Debug.Log ("GAME OVER!!! Your score: " + score);
Application.LoadLevel("GameOverMenu");
if (score > highestScore) {
highestScore = score;
}
PlayerPrefs.SetInt ("currentScore", score);
PlayerPrefs.SetInt ("highestScore", highestScore);
PlayerPrefs.SetInt ("highestScoreOld", highestScoreOld);
}
}
答案 0 :(得分:0)
我认为你应该调用Application.LoadLevel(&#34; GameOverMenu&#34;);在方法的最后。在方法完全完成之前,您正在加载新场景。这是修改过的 -
void gameOver(int score) {
//Debug.Log ("GAME OVER!!! Your score: " + score);
if (score > highestScore) {
highestScore = score;
}
PlayerPrefs.SetInt ("currentScore", score);
PlayerPrefs.SetInt ("highestScore", highestScore);
PlayerPrefs.SetInt ("highestScoreOld", highestScoreOld);
Application.LoadLevel("GameOverMenu");
}
希望它有所帮助。
答案 1 :(得分:0)
我在下面修复它!!!
void gameOver(int score) {
//Debug.Log ("GAME OVER!!! Your score: " + score);
if (PlayerPrefs.HasKey ("highestScore")) {
highestScore = PlayerPrefs.GetInt ("highestScore");
highestScoreOld = highestScore;
} else {
highestScore = 0;
highestScoreOld = highestScore;
}
if (score > highestScore) {
highestScore = score;
}
PlayerPrefs.SetInt ("currentScore", score);
PlayerPrefs.SetInt ("highestScore", highestScore);
PlayerPrefs.SetInt ("highestScoreOld", highestScoreOld);
Application.LoadLevel("LoadLevel");
} }