2017-08-02 14 views
1

Hilfe, PlayerPrefs scheint nicht zu funktionieren und kann nicht herausfinden, warum.PlayerPrefs in Unity 3d funktioniert nicht (manchmal)

Ich habe ein einfaches Spiel, das mit Beginn des Einsatzes:

void Start() 
{ 

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

Wenn auf meinem Android-Gerät von Unity Editor testen (Aufbau und Betrieb während der Verbindung) funktioniert wie beabsichtigt - wenn ich zurückkehre es zum zweiten Mal App erkennt Ich komme zurück.

Allerdings, wenn ich den gleichen Code auf Google Play Store veröffentlicht und von dort installiert installiert, erkennt es nie, dass ich ein wiederkehrender Benutzer bin, wenn ich zum zweiten Mal zur App zurückkehren.

Auch seltsam, während es auf meinem Android-Handy nicht funktioniert, auf meiner Frau Handy aus dem Play Store installiert erkennt es als wiederkehrender Benutzer, wenn sie es ein zweites Mal öffnet.

Irgendwelche Ideen?

Unity 5.3.6 Mein Telefon - Redmi Note 3, Android 6.0.1 MIUI 8.2 Stable Frautelefon - OnePlusX

+0

Hoppla. Du hast nach dem Hinzufügen der Antwort ein mögliches Duplikat gefunden. Wird die Frage schließen. – Programmer

Antwort

3

ich vor ähnliches Problem hatte. Ich habe das gelöst, indem ich eine PlayerPrefs.Save() nach dem Aufruf der anderen PlayerPrefs.Set * -Methoden hinzugefügt habe. Dies erzwingt alle Schreibvorgänge auf die Festplatte.

+0

Danke, das löst. Ich habe mein Handy gewaltsam geschlossen, was die normale Ersparnis beim Beenden überspringt. Jetzt speichere ich manuell jedes Mal, wenn ich die Werte einstelle und das funktioniert. –

2

es als wiederkehrender Benutzer erkennt, wenn sie es zum zweiten Mal

Kraft, es zu speichern öffnet sich. Vielleicht ist das das Problem. Nachdem Sie PlayerPrefs.SetInt("IsReturningUser", 1); aufgerufen haben, rufen Sie PlayerPrefs.Save() auf, um es zu speichern.


Wenn die nicht-nicht hilft, gibt der PlayerPrefs.GetInt Funktion einen Standardwert, wenn der Schlüssel nicht existiert, wie ich here tat. Ändern Sie einfach PlayerPrefs.GetInt("IsReturningUser") == 1 zu PlayerPrefs.GetInt("IsReturningUser", 0) == 1.


Schließlich, wenn immer noch nicht funktioniert, verwenden Sie einfach File.WriteAllBytes und die Datei auf Application.persistentDataPath/yourFolderName speichern. Sie finden das vollständige Beispiel here.