2017-08-02 15 views
1

ヘルプ、PlayerPrefsは動作していないように見えません。 UnityのPlayerPrefsは動作しません(時々)

私はで始まる簡単なゲームを持っている:

void Start() 
{ 

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

ユニティエディタ(ビルドおよび接続されている間に実行)、それは意図したとおりに動作しますから、私のAndroidデバイス上でテストする - 私はそれを検出する第2の時間をアプリに戻ったときに私は戻ってきます。

ただし、Google Playストアに同じコードを公開してそこからインストールした場合、2回目にアプリに戻ると返信するユーザーは検出されません。

また、私のAndroid携帯では動作しませんが、Playストアからインストールされた妻の携帯電話では、2度目に開いたときに戻るユーザーとして検出されます。

アイデア?

ユニティ5.3.6 私の携帯電話 - Redmi注3、アンドロイド6.0.1 MIUI 8.2安定 妻の携帯電話 - OnePlusX

私は前に同様の問題があった
+0

ちょうど答えを加えた後に可能な重複を見つけました。質問は終了します。 – Programmer

答えて

3

。私は他のPlayerPrefs.Set *メソッドを呼び出した後にPlayerPrefs.Save()を追加して解決しました。これにより、すべてのディスクへの書き込みが強制されます。

+0

ありがとう、それは解決します。私は強制終了して私の携帯電話を終了していたが、私は退出時に定期的な退避をスキップすると思う。これで値を設定するたびにこれを使って手動で保存しています。 –

2

それは彼女がそれを開いたときに保存し、それを強制的に二度目に戻ってユーザーとして

を検出しません。多分それが問題です。 PlayerPrefs.SetInt("IsReturningUser", 1);に電話したら、PlayerPrefs.Save()に電話して保存してください。


それは私がhereを行ったようにキーが存在しない場合PlayerPrefs.GetInt機能をデフォルト値を与えて、で、すべての問題が解決しない場合。 PlayerPrefs.GetInt("IsReturningUser") == 1PlayerPrefs.GetInt("IsReturningUser", 0) == 1に変更してください。


最後に、まだ動作しない場合は、単にFile.WriteAllBytesを使用してApplication.persistentDataPath/yourFolderNameにファイルを保存します。完全な例hereを見つけることができます。

関連する問題