- Home /
Question by
JulySellanes · Mar 08, 2019 at 12:02 AM ·
changegoogle play gameshighscoreaccountreplace
(Google Play Services) When I change my google play account it does not replace the high score
Hi, Im new with Google Play Services but for now all work perfect except for that when I change the account for another, the high score does not change by the high score of the other account, I think is because I save it in local with PlayerPrefab, but I dont know, somebody knows how to fix it?
My script:
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityEngine.SocialPlatforms;
using GooglePlayGames;
using GooglePlayGames.BasicApi;
using GooglePlayGames.BasicApi.SavedGame;
public class PlayGamesScript : MonoBehaviour
{
public static PlayGamesScript Instance { get; private set; }
void Start ()
{
Instance = this;
GooglePlayGames.BasicApi.PlayGamesClientConfiguration config =
new GooglePlayGames.BasicApi.PlayGamesClientConfiguration.Builder().EnableSavedGames().Build();
PlayGamesPlatform.InitializeInstance(config);
PlayGamesPlatform.Activate();
SignIn();
}
void Update ()
{
}
public void SignIn ()
{
Social.localUser.Authenticate(success => {
OpenSave (false);
});
}
public void SignOut()
{
if (Social.localUser.authenticated)
{
PlayGamesPlatform.Instance.SignOut();
}
}
#region Saved Games
private string GetSaveString()
{
string r = "";
r += PlayerPrefs.GetInt ("Highscore").ToString ();
r += "|";
return r;
}
private void LoadSaveString(string save)
{
string[] data = save.Split('|');
PlayerPrefs.SetInt ("Highscore", int.Parse (data [0]));
}
private bool isSaving = false;
public void OpenSave(bool saving)
{
if (Social.localUser.authenticated)
{
isSaving = saving;
((PlayGamesPlatform)Social.Active).SavedGame.OpenWithAutomaticConflictResolution("Save Name",
GooglePlayGames.BasicApi.DataSource.ReadCacheOrNetwork,
ConflictResolutionStrategy.UseLongestPlaytime, SaveGameOpened);
}
}
private void SaveGameOpened(SavedGameRequestStatus status, ISavedGameMetadata meta)
{
if (status == SavedGameRequestStatus.Success)
{
if (isSaving)
{
byte[] data = System.Text.ASCIIEncoding.ASCII.GetBytes(GetSaveString());
SavedGameMetadataUpdate update = new SavedGameMetadataUpdate.Builder().WithUpdatedDescription("Saved at " + DateTime.Now.ToString()).Build();
((PlayGamesPlatform)Social.Active).SavedGame.CommitUpdate(meta, update, data, SaveUpdate);
}
else
{
((PlayGamesPlatform)Social.Active).SavedGame.ReadBinaryData(meta, SaveRead);
}
}
}
private void SaveRead(SavedGameRequestStatus status, byte[] data)
{
if (status == SavedGameRequestStatus.Success)
{
string saveData = System.Text.ASCIIEncoding.ASCII.GetString(data);
LoadSaveString(saveData);
}
}
private void SaveUpdate(SavedGameRequestStatus status, ISavedGameMetadata meta)
{
}
#endregion /Saved Games
#region Achievements
public static void UnlockAchievement (string id)
{
Social.ReportProgress (id, 100, success => { });
}
public static void IncrementAchievement (string id, int stepsToIncrement)
{
PlayGamesPlatform.Instance.IncrementAchievement (id, stepsToIncrement, success => { });
}
public static void ShowAchievementsUI ()
{
if (Social.localUser.authenticated)
{
Social.ShowAchievementsUI ();
}
else
{
PlayGamesScript.Instance.SignIn ();
}
}
#endregion /Achievements
#region Leaderboards
public static void AddScoreToLeaderboard (string leaderboardId, long score)
{
Social.ReportScore (score, leaderboardId, success => { });
}
public static void ShowLeaderboards ()
{
if (Social.localUser.authenticated)
{
Social.ShowLeaderboardUI();
}
else
{
PlayGamesScript.Instance.SignIn ();
}
}
#endregion /Leaderboards
}
Comment