在 Unity2d 中保存和加载高分
Saving and loading high scores in Unity2d
到目前为止我所做的是在游戏中设置一个每秒增加的分数,让分数在游戏场景中显示,然后如果分数大于则将最高分设置为等于分数高分。到目前为止,这是我的代码:
bool gameOver;
public Text scoreText;
public Text highScoreText;
int score;
int highScore;
// Use this for initialization
void Start () {
score = 0;
highScore = 0;
InvokeRepeating ("scoreUpdate", 1.0f, 1.0f);
gameOver = false;
}
// Update is called once per frame
void Update () {
scoreText.text = "★" + score;
highScoreText.text = "★" + highScore;
}
public void gameOverActivated() {
gameOver = true;
if (score > highScore) {
highScore = score;
}
PlayerPrefs.SetInt("score", score);
PlayerPrefs.Save();
PlayerPrefs.SetInt("highScore", highScore);
PlayerPrefs.Save();
}
void scoreUpdate() {
if (!gameOver) {
score += 1;
}} }
"game over" 出现此代码时等于 true:
void OnCollisionEnter2D (Collision2D col) {
if (col.gameObject.tag == "enemyPlanet") {
ui.gameOverActivated ();
Destroy (gameObject);
Application.LoadLevel ("gameOverScene2");
}
}
我想要的是在这一点上(当对象发生碰撞并且游戏结束为真时)保存分数,然后加载游戏结束场景。如何在游戏结束时保存分数,然后将其与保存的高分一起加载到游戏结束场景中??
有多种方法可以做到这一点,如果您只保留该会话的分数,最明显的两种方法是将其存储在 Static Class 中 或 单例 。无论场景加载如何,这些 class 都会持续存在您需要的时间,因此请谨慎管理其中的信息。
静态 class 实现的一个示例是:
public static class HighScoreManager
{
public static int HighScore { get; private set; }
public static void UpdateHighScore(int value)
{
HighScore = value;
}
}
如果您希望将数据保留更长时间,则需要查看 this
希望对您有所帮助!
到目前为止我所做的是在游戏中设置一个每秒增加的分数,让分数在游戏场景中显示,然后如果分数大于则将最高分设置为等于分数高分。到目前为止,这是我的代码:
bool gameOver;
public Text scoreText;
public Text highScoreText;
int score;
int highScore;
// Use this for initialization
void Start () {
score = 0;
highScore = 0;
InvokeRepeating ("scoreUpdate", 1.0f, 1.0f);
gameOver = false;
}
// Update is called once per frame
void Update () {
scoreText.text = "★" + score;
highScoreText.text = "★" + highScore;
}
public void gameOverActivated() {
gameOver = true;
if (score > highScore) {
highScore = score;
}
PlayerPrefs.SetInt("score", score);
PlayerPrefs.Save();
PlayerPrefs.SetInt("highScore", highScore);
PlayerPrefs.Save();
}
void scoreUpdate() {
if (!gameOver) {
score += 1;
}} }
"game over" 出现此代码时等于 true:
void OnCollisionEnter2D (Collision2D col) {
if (col.gameObject.tag == "enemyPlanet") {
ui.gameOverActivated ();
Destroy (gameObject);
Application.LoadLevel ("gameOverScene2");
}
}
我想要的是在这一点上(当对象发生碰撞并且游戏结束为真时)保存分数,然后加载游戏结束场景。如何在游戏结束时保存分数,然后将其与保存的高分一起加载到游戏结束场景中??
有多种方法可以做到这一点,如果您只保留该会话的分数,最明显的两种方法是将其存储在 Static Class 中 或 单例 。无论场景加载如何,这些 class 都会持续存在您需要的时间,因此请谨慎管理其中的信息。
静态 class 实现的一个示例是:
public static class HighScoreManager
{
public static int HighScore { get; private set; }
public static void UpdateHighScore(int value)
{
HighScore = value;
}
}
如果您希望将数据保留更长时间,则需要查看 this
希望对您有所帮助!