如何保存玩家的高分?getter和setter是最好的方法
本文关键字:getter setter 方法 何保存 保存 玩家 | 更新日期: 2023-09-27 18:11:14
问题:现在我有我的得分工作,我需要保存球员的高分。如果玩家获得了新的高分,那么游戏便需要将其替换为玩家的新分数。
问题:我如何设置这些getter和setter来保存并将高分传递到结束场景?
附加:我已经为我的分数设置了一个实例,这是我遇到问题的地方,因为我开始得到错误。
场景1代码:
public class Score : MonoBehaviour
{
public static Score instance { get; private set;}
public static int score = 0;
void Awake ()
{
score = 0;
InvokeRepeating("increaseScore", 1, 1);
}
public void Update ()
{
score++;
// Set the score text.
guiText.text = "Score: " + score;
instance = this;
}
}
结尾场景代码:
public class endScore : MonoBehaviour {
// Use this for initialization
void Update () {
// Set the score text.
guiText.text = "Score: " + Score.score;
}
}
您可以使用PlayerPrefs存储超过当前会话的高分。如果您只想使用静态变量存储当前会话的分数,则可以工作,但我认为您可能希望在下一个会话中保持高分。
我的建议是在他们进入下一个场景时设置最高分。
void OnGameEnd()
{
ScoreManager.TrySetHighScore(Score.CurrentScore);
Application.LoadLevel("ResultScreen");
}
以上只是为了演示您可以从存储的任何地方获取分数,并将其传递给分数管理器以设置最高分。scoremanager类将包含维护高分的逻辑。
public class ScoreManager
{
public static int GetHighScore()
{
return PlayerPrefs.GetInt("HighScore");
}
// Will set the score as the high score if it is the new high score
public static int TrySetHighScore(int score)
{
PlayerPrefs.SetInt("HighScore", Mathf.Max(GetHighScore(), score);
}
}
保存你只需要调用这个
PlayerPrefs.SetFloat(levelText, highscore);
leveltext =是文件名或者存储名,只是一个标识符,这样我们就知道要保护的数据名称是什么,这里我只使用级别名。
hilicore =是它自己的数据,在这种方法中我使用float so,还有settint和SetString。
和加载数据
savedHighscore = PlayerPrefs.GetFloat(levelText);
savedhilicore =是加载数据的变量。
为了更好的练习,最好这样做
if (PlayerPrefs.HasKey(levelText))
{
savedHighscore = PlayerPrefs.GetFloat(levelText);
}
else
{
savedHighscore = 0;
}