2017-08-02 390 views
1

帮助,PlayerPrefs似乎无法正常工作,但无法找出原因。Unity 3D中的PlayerPrefs不起作用(有时)

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

void Start() 
{ 

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

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

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

奇怪的是,虽然它在我的Android手机上无法正常工作,但在我的妻子从Play商店安装的手机上,当它第二次打开时,它确实会作为返回用户进行检测。

任何想法?

统一5.3.6 我的手机 - 红米手机注3,安卓6.0.1 MIUI 8.2稳定 妻子的电话 - OnePlusX

+0

糟糕。刚添加答案后发现可能有重复。将关闭的问题。 – Programmer

回答

3

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

+0

谢谢,解决了。我正在退出我的手机强制关闭,我猜在退出时跳过正常保存。现在我每次使用此设置手动保存值并且工作。 –

2

,当她打开它,第二次

迫使它保存它并检查为回归用户。也许这就是问题所在。拨打PlayerPrefs.SetInt("IsReturningUser", 1);后,请致电PlayerPrefs.Save()进行保存。


如果没有不惜一切帮助,给PlayerPrefs.GetInt功能的默认值,如果该键不存在像我一样here。只需将PlayerPrefs.GetInt("IsReturningUser") == 1更改为PlayerPrefs.GetInt("IsReturningUser", 0) == 1即可。


最后,如果仍然没有工作,只是使用File.WriteAllBytes,将文件保存到Application.persistentDataPath/yourFolderName。你可以找到完整的例子here