用于保存密码的 Unity 切换在 Unity 中完美运行,但未按预期运行

Unity toggle to save password works flawlessly in Unity but doesn't work as expected

我在 PlayerPrefs 中保存用户登录名和密码时遇到问题。虽然它在 Unity 中工作得很好(如果保存了密码,则切换在启动时打开)它在 Android 上不起作用(如果未保存密码,则切换在启动时仍然打开)。在为 Android 构建之前,我确保切换开关已关闭且密码未保存。 这是我的代码:

void LoadUserPassOnStart(){
        if(PlayerPrefs.HasKey("userSaved")){
            if(PlayerPrefs.GetInt("userSaved") == 1){
                loginEmail.text = PlayerPrefs.GetString("savedUsername");
                loginPassword.text = PlayerPrefs.GetString("savedPass");
                saveUserPassToggle.isOn = true;

                int saved = PlayerPrefs.GetInt("userSaved");

                Debug.Log(saved);
            }
            else if(PlayerPrefs.GetInt("userSaved") == 0)
            {
                saveUserPassToggle.isOn = false;
                Debug.Log("Called false");
            }
        }

    }

    void SaveUserPass(Toggle saveUserPassToggle){
        if(saveUserPassToggle.isOn){
            PlayerPrefs.SetString("savedUsername", loginEmail.text);
            PlayerPrefs.SetString("savedPass", loginPassword.text);
            PlayerPrefs.SetInt("userSaved", 1);
            Debug.Log("Saved");
        }
        else if(!saveUserPassToggle.isOn){
            PlayerPrefs.SetString("savedUsername", "");
            PlayerPrefs.SetString("savedPass", "");
            PlayerPrefs.SetInt("userSaved", 0);
            Debug.Log("Nulled");
        }
}

我在 Start(){} 中调用 LoadUserPassOnStart 并将 SaveUserPass 添加到切换:

saveUserPassToggle.onValueChanged.AddListener(delegate{ SaveUserPass(saveUserPassToggle);});

这个问题让我抓狂,非常感谢您的建议。

设置密钥后尝试使用 PlayerPrefs.Save();

此问题是由于 Android 即使在卸载游戏后也会存储来自 PlayerPrefs 的信息。