Unity 3d中的PlayerPrefs无效(有时)

时间:2017-08-02 15:15:34

标签: android unity3d

帮助,PlayerPrefs似乎无法正常工作,无法找出原因。

我有一个简单的游戏,开头是:

void Start()
{

    if (PlayerPrefs.GetInt("IsReturningUser") == 1)
    {
        ScoreLabel.text = "Welcome back, friend!";
    }
    else
    {
        PlayerPrefs.SetInt("IsReturningUser", 1);
        ScoreLabel.text = "Welcome new player";
    }

在我的Android设备上从Unity编辑器测试时(在连接时构建和运行)它按预期工作 - 当我第二次返回app时它检测到我正在返回。

然而,当我向Google Play商店发布相同的代码并从那里安装干净时,它在我第二次返回应用时从未检测到我是返回用户。

同样奇怪的是,虽然它在我的Android手机上不起作用,但是在Play商店安装的我妻子的手机上,当她第二次打开它时,它会检测为返回用户。

有什么想法吗?

Unity 5.3.6 我的手机 - Redmi Note 3,Android 6.0.1 MIUI 8.2稳定 妻子电话 - OnePlusX

2 个答案:

答案 0 :(得分:3)

我以前遇到过类似的问题。我通过在调用其他PlayerPrefs.Set *方法之后添加一个PlayerPrefs.Save()来解决。这会强制所有写入磁盘。

答案 1 :(得分:2)

  

当她第二次打开它时,它会检测为返回用户

强制保存。也许这就是问题所在。致电PlayerPrefs.SetInt("IsReturningUser", 1);后,请致电PlayerPrefs.Save()保存。

如果这对我们没有帮助,那么如果密钥不存在,就像我here那样,给PlayerPrefs.GetInt函数一个默认值。只需将PlayerPrefs.GetInt("IsReturningUser") == 1更改为PlayerPrefs.GetInt("IsReturningUser", 0) == 1

最后,如果仍然无效,请使用File.WriteAllBytes并将文件保存到Application.persistentDataPath/yourFolderName。您可以找到完整示例here