2016-07-21 21 views
0

Der folgende Code ruft den Punktestand des Spielers von der Google Play-Rangliste ab. Wenn der abgerufene Wert dem bereits auf dem Gerät gespeicherten Wert überlegen ist, wird der Punktestand gespeichert.Fehler beim Versuch, den Punktestand zu speichern?

public void Update() 
    {  
PlayGamesPlatform.Instance.LoadScores(
      "myLeaderboardID", 
      LeaderboardStart.PlayerCentered, 
      100, 
      LeaderboardCollection.Public, 
      LeaderboardTimeSpan.AllTime, 
      (data) => 
      { 
       if (data.Valid) 
       if (data.Scores[0].value > PlayerPrefs.GetInt("highScore", highScore)) 
       { 
        PlayerPrefs.SetInt("highScore", data.Scores[0].value); 
        PlayerPrefs.Save(); 
       } 
      }); 
} 

Leider erhalte ich zwei Fehler auf dieser Linie PlayerPrefs.SetInt("highScore", data.Scores[0].value);

error CS1502: The best overloaded method match for `UnityEngine.PlayerPrefs.SetInt(string, int)' has some invalid arguments 

error CS1503: Argument `#2' cannot convert `long' expression to type `int' 

Wie kann ich dieses Problem beheben?

+1

haben Sie versucht, explizit Ihre lange in einen int Gießen? – TheDjentleman

Antwort

1

Sie haben data.Scores[0].value zu werfen (die eine long wird) zu Integer

Sie es schnell und schmutzig wie dies tun können:

PlayerPrefs.SetInt("highScore", (int)data.Scores[0].value); 
+0

danke. Der Fehler ist verschwunden, aber die neue Rangliste wird nicht gespeichert. weißt du, warum? – Gafer

+0

Haben Sie es debuggt und sind sicher, dass der richtige Wert an den Server gesendet wird? – Bobby

+1

mach dir keine Sorgen. ich habe es repariert. – Gafer

Verwandte Themen