2017-08-02 386 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