在WebGL中构建游戏后,Unity PlayerPrefs加载不同的数据

时间:2019-12-17 12:04:54

标签: unity3d unity-webgl

我在用Webgl构建的WordSearch游戏中使用playerprefs。当我在游戏过程中多次关闭游戏时,就会出现问题。它会自动以随机倒计时值开始,例如20、140等,并带有先前的分数(有时不是应该保存的确切分数)。 这是我正在使用playerpreds的代码...

[SerializeField] public  float currentLevelScore = 0.0f;
[SerializeField] private float timeLeft;
[SerializeField] private string accessToken = "";

void Awake()
{
    GetPlayerPrefData();
    }

void Start() {
        if(timeLeft == fixedTime)
        {
            PauseGame();
        }

        //Retrive Saved Player prefs Data
        if (PlayerPrefs.GetFloat("timeLeft")<150 && PlayerPrefs.GetFloat("timeLeft") > 0)
        {
            StartGameCanvas.SetActive(false);
        }
        else
        {
            if(PlayerPrefs.GetFloat("timeLeft") == 150)
            {
                StartGameCanvas.SetActive(true);
            }
        }

        if (PlayerPrefs.GetFloat("timeLeft").Equals(0) || PlayerPrefs.GetFloat("timeLeft").Equals(null))
        {
            PlayerPrefs.SetFloat("timeLeft", fixedTime);
        }
}

void GetPlayerPrefData()
    {
        accessToken = PlayerPrefs.GetString("accessToken");
        currentLevelScore = PlayerPrefs.GetFloat("currentLevelScore");
        float countdownTime = PlayerPrefs.GetFloat("timeLeft");
        if (countdownTime <= 0)
        {
            timeLeft = fixedTime;
        }
        else
        {
            timeLeft = countdownTime;
        }
    }

//This function is calls when the Time is up or user hit the quit button
 public void ResetAllData()
    {
        float defaultScore = 0;
        string defaultAccessToken = null;

        PlayerPrefs.SetFloat("currentLevelScore", defaultScore);
        PlayerPrefs.SetFloat("timeLeft", fixedTime);
        PlayerPrefs.SetString("timeLeft", defaultAccessToken);
        PlayerPrefs.Save();
    }

仅在构建游戏后才会发生此问题。在编辑器中工作正常。

有人可以给我一个想法或帮助解决这个问题吗?任何建议将不胜感激...

0 个答案:

没有答案