Unity C#Player偏好高分不起作用

问题描述 投票:0回答:1

我在统一使用PlayerPrefs时出错(C#)在Android上

似乎没有保存它

脚本1

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Scores : MonoBehaviour
{
    public static int highscore;
    public static int points;

    public void Start()
    {

    }

    public void Update()
    {
            highscore = PlayerPrefs.GetInt("highscore");
            PlayerPrefs.SetInt("highscore", highscore);
            PlayerPrefs.Save();
    }
}

脚本2(使用它的部分)

    void Update()
    {
        highscore = PlayerPrefs.GetInt("Highscore");


        if (points > highscore)
        {
            highscore = points;
            highscoretext.text = "Highscore: " + highscore;
            highscoretext2.text = "Highscore: " + highscore;
        }

[当我获得高分时,例如12,我死了,我回到主屏幕,然后回到游戏,并且重新启动应用程序时,高分与游戏相同。

c# unity3d
1个回答
0
投票

现在设置高分时,您将获得当前的高分并将其存储在highscore变量中。然后,您可以使用highscore变量覆盖高分,从而有效地将高分设置为其自身。您实际上想要做的是检查当前分数是否大于最高分数,如果是,则将最高分数设置为当前分数。

highscore = PlayerPrefs.GetInt("highscore");
if(score > highscore)
{
    PlayerPrefs.SetInt("highscore", score);
    PlayerPrefs.Save();
}

代码无法正常工作的另一个原因是,您在脚本1中用小h拼写"highscore",但在脚本2中用大h拼写。

此外,每次更新都调用PlayerPrefs.GetInt效率很低。您应该将它们设置为仅在需要获得或设置高分时才调用的函数。

© www.soinside.com 2019 - 2024. All rights reserved.