public void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription("Saved game at " + DateTime.Now); // my customization Texture2D savedImage = GameObject.FindGameObjectWithTag("GameManager").GetComponent <GameManager>().saveGameImage; // end my customization if (savedImage != null) { // This assumes that savedImage is an instance of Texture2D // and that you have already called a function equivalent to // getScreenshot() to set savedImage // NOTE: see sample definition of getScreenshot() method below byte[] pngData = savedImage.EncodeToPNG(); builder = builder.WithUpdatedPngCoverImage(pngData); } SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten); }
void WriteSaveGameData(ISavedGameMetadata game) { try { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(game.TotalTimePlayed) .WithUpdatedDescription("Saved game at " + DateTime.Now); SavedGameMetadataUpdate updatedMetadata = builder.Build(); SaveData saveData = new SaveData { CountCoins = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.CountCollectedCoins), CurrentLevel = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.CurrentLevel), TimeSession = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.MaxTimeGameSession), CountKillEnemies = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.CountKillEnemies), HighScore = PlayerPrefs.GetInt(VariablesSaveOnPlayerPrefs.HighScore) }; string json = JsonUtility.ToJson(saveData); savedGameClient.CommitUpdate(game, updatedMetadata, JsonStringToByteArray(json), OnSavedGameWritten); } catch (Exception e) { Debug.Log(e); } }
public void Write(GameData value) { System.Action action = () => { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; savedGameClient.OpenWithAutomaticConflictResolution(Globals.GetFilename <GameData>(), DataSource.ReadCacheOrNetwork, ConflictResolutionStrategy.UseMostRecentlySaved, (status, game) => { if (status == SavedGameRequestStatus.Success) { byte[] binaryData = value.Serialize(); SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder.WithUpdatedDescription($"Saved at {DateTime.Now}"); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, binaryData, (s, g) => { if (s == SavedGameRequestStatus.Success) { Extensions.Log(GetType(), $"Google Play writing completed. Status: {s}; Filename: {g.Filename}; Description: {g.Description};"); } else { Extensions.Log(GetType(), $"Google Play writing failed. Status: {s};"); } }); } else { Extensions.Log(GetType(), $"Couldn't open saved game. Status: {status};"); } }); }; PerformAction(action); }
public void SavePlayerDataCloud(SavedGameRequestStatus status, ISavedGameMetadata meta) { if (status == SavedGameRequestStatus.Success) { if (isSaving) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(meta.TotalTimePlayed.Add(new TimeSpan(0, 0, (int)Time.realtimeSinceStartup))); SavedGameMetadataUpdate update = builder.Build(); savedGameClient.CommitUpdate(meta, update, ObjectToByteArray(GameManager.singleton.playerData), SaveUpdate); } else { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; savedGameClient.ReadBinaryData(meta, SaveReadPlayerData); } } else { Debug.Log("Not succeed! Save Player Data Cloud!"); } }
static public void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime, Action <SavedGameRequestStatus, ISavedGameMetadata> onSavedGameWritten, string description = "") { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; if (string.IsNullOrEmpty(description)) { description = "Saved at " + DateTime.Now; } SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription(description); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, (status, data) => { if (status != SavedGameRequestStatus.Success) { PlayerLoggedIn = false; } if (onSavedGameWritten != null) { onSavedGameWritten.Invoke(status, data); } }); }
private void WriteGame(ISavedGameMetadata game, byte[] savedData) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder.WithUpdatedDescription("Saved game at " + System.DateTime.Now); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten); }
public void WriteSaveGame(ISavedGameMetadata game, byte[] saveData, Action <SavedGameRequestStatus, ISavedGameMetadata> callback) { if (m_bLogin) { SavedGameMetadataUpdate updateMetData = new SavedGameMetadataUpdate.Builder().WithUpdatedPlayedTime(TimeSpan.FromMinutes(game.TotalTimePlayed.Minutes + 1)).WithUpdatedDescription("Save at : " + DateTime.Now).Build(); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; savedGameClient.CommitUpdate(game, updateMetData, saveData, callback); } }
void SaveGame(ISavedGameMetadata data, byte[] _byte, TimeSpan playTime) { ISavedGameClient savedClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder.WithUpdatedPlayedTime(playTime).WithUpdatedDescription("Saved at " + DateTime.Now); SavedGameMetadataUpdate updateData = builder.Build(); savedClient.CommitUpdate(data, updateData, _byte, OnSavedGameWritten); }
public void SaveGame(ISavedGameMetadata _data, byte[] _byte, TimeSpan _playTime) { #if UNITY_ANDROID ISavedGameClient savedGame = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder.WithUpdatedPlayedTime(_playTime).WithUpdatedDescription("Saved at " + DateTime.Now); SavedGameMetadataUpdate updateData = builder.Build(); savedGame.CommitUpdate(_data, updateData, _byte, OnSacedGameWritten); #endif }
//Save Data To Cloud private void WriteSavedGame(ISavedGameMetadata game, byte[] savedData, Action <SavedGameRequestStatus, ISavedGameMetadata> callback) { SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder() .WithUpdatedPlayedTime(TimeSpan.FromMinutes(game.TotalTimePlayed.Minutes + 1)) .WithUpdatedDescription("Saved at: " + System.DateTime.Now); SavedGameMetadataUpdate updatedMetadata = builder.Build(); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; savedGameClient.CommitUpdate(game, updatedMetadata, savedData, callback); }
private void WriteGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime, Action <SavedGameRequestStatus, ISavedGameMetadata> onSavedGameWritten) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription("Saved game at " + DateTime.Now); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, onSavedGameWritten); }
static void SaveGame(ISavedGameMetadata game) { byte[] savedData = SaveLoad.ToByteArray(); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedDescription("Saved game at " + DateTime.Now); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten); }
private static void SaveGooglePlay(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime) { //Debug.Log("SavingGP"); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription("Saved game at " + DateTime.Now); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten); }
private void SaveGame(ISavedGameMetadata data, byte[] _byte, TimeSpan playTime) { // 저장된 게임 열어서 시간비교하고 ISavedGameClient savedClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder.WithUpdatedPlayedTime(playTime).WithUpdatedDescription("saved at " + DateTime.Now); SaveManager.cloudSaveDate = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss"); SaveManager.instance.SaveString("cloudSaveDate", SaveManager.cloudSaveDate); SavedGameMetadataUpdate updatedData = builder.Build(); // 데이터들을 Commit해줌 savedClient.CommitUpdate(data, updatedData, _byte, OnSavedGameWritten); }
private static void WriteSavedGame(byte[] Data) { SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder() .WithUpdatedPlayedTime(TimeSpan.FromMinutes(currentGame.TotalTimePlayed.Minutes + 1)) .WithUpdatedDescription("Saved at: " + System.DateTime.Now); // You can add an image to saved game data (such as as screenshot) // byte[] pngData = <PNG AS BYTES>; // builder = builder.WithUpdatedPngCoverImage(pngData); SavedGameMetadataUpdate updatedMetadata = builder.Build(); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; savedGameClient.CommitUpdate(currentGame, updatedMetadata, Data, OnWriteSavedGames); }
public void WriteSavedGame(ISavedGameMetadata game, byte[] savedData, Action <SavedGameRequestStatus, ISavedGameMetadata> callback) { SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder() .WithUpdatedPlayedTime(TimeSpan.FromMinutes(game.TotalTimePlayed.Minutes + 1)) .WithUpdatedDescription("Saved at: " + System.DateTime.Now); // You can add an image to saved game data (such as as screenshot) // byte[] pngData = <PNG AS BYTES>; // builder = builder.WithUpdatedPngCoverImage(pngData); SavedGameMetadataUpdate updatedMetadata = builder.Build(); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; savedGameClient.CommitUpdate(game, updatedMetadata, savedData, callback); }
//записывает данные сохранения public void WriteSaveData(byte[] data) { if (!IsAuthenticated || data == null || data.Length == 0) { return; } TimeSpan currentSpan = DateTime.Now - startDateTime; Action OnDataWrite = () => { TimeSpan totalPlayTime = currentMetadata.TotalTimePlayed + currentSpan; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder() .WithUpdatedDescription("Saved game at " + DateTime.Now) .WithUpdatedPlayedTime(totalPlayTime); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(currentMetadata, updatedMetadata, data, (status, metadata) => currentMetadata = metadata); startDateTime = DateTime.Now; }; if (currentMetadata == null) { OpenSaveData(DEFAULT_SAVE_NAME, (status, metadata) => { Debug.Log("Cloud data write status: " + status.ToString()); if (status == SavedGameRequestStatus.Success) { currentMetadata = metadata; OnDataWrite(); } }); return; } OnDataWrite(); }
static void SaveGame() { Debug.Log("SaveGame()"); if (Social.localUser.authenticated && savedGameMetadata != null) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); TimeSpan totalPlaytime = new TimeSpan(0, 0, Mathf.FloorToInt(Time.realtimeSinceStartup)); totalPlaytime = totalPlaytime.Add(savedGameMetadata.TotalTimePlayed); SavedGameMetadataUpdate updatedMetadata = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription(string.Format("Saved game at {0} - Playtime: {1} - {2} coin(s)", DateTime.Now, totalPlaytime, ApplicationController.ac.PlayerData.coins)) .Build(); byte[] savedData = ObjectToByteArray(ApplicationController.ac.PlayerData); Debug.LogFormat("Trying to CommitUpdate() with savedGameMetadata={0} - updatedMetadata={1} - savedData={2}", savedGameMetadata, updatedMetadata, savedData); savedGameClient.CommitUpdate(savedGameMetadata, updatedMetadata, savedData, OnSavedGameWritten); } }
void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription("Saved game at " + DateTime.Now); //if (savedImage != null) { // This assumes that savedImage is an instance of Texture2D // and that you have already called a function equivalent to // getScreenshot() to set savedImage // NOTE: see sample definition of getScreenshot() method below // byte[] pngData = null; // builder = builder.WithUpdatedPngCoverImage(pngData); //} SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten); }
/* * Does the cloud save. * Converts PlayerData into a byte array. Updates play time and saved file description. Then commits. * */ public void CloudSave(SavedGameRequestStatus status, ISavedGameMetadata game) { Save(); byte[] data = ToBytes(this.playerData); //Calculate play time and total playtime. TimeSpan delta = DateTime.Now.Subtract(loadedTime); playingTime += delta; this.timePlayed = playingTime; ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder.WithUpdatedPlayedTime(this.timePlayed).WithUpdatedDescription("Current Level: " + playerData.currentGameLevel + " Current Player Level: " + playerData.playerLevel); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, data, OnSaveWritten); }
static void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; var builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription("Saved game at " + DateTime.Now); var savedImage = GetScreenshot(); Debug.Log("Saved image " + savedImage); if (savedImage != null) { byte[] pngData = savedImage.EncodeToPNG(); builder = builder.WithUpdatedPngCoverImage(pngData); } SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten); }
//zapis migawki #region SaveGameSnap void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime) { ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) // metadane .WithUpdatedDescription("Saved game at " + DateTime.Now()); // metadane if (savedImage != null) { byte[] pngData = savedImage.EncodeToPNG(); builder = builder.WithUpdatedPngCoverImage(pngData); // metadane } SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate( game, updatedMetadata, savedData, OnSavedGameWritten // callback ); }
private void OnSavedGameOpened(SavedGameRequestStatus status, ISavedGameMetadata game) { if (status == SavedGameRequestStatus.Success) { Debug.Log(DEBUG_KEY + "Old meta data: " + saveGameMetaData); Debug.Log(DEBUG_KEY + "New meta data: " + game); saveGameMetaData = game; if (isSaving) { isSaving = false; Debug.Log(DEBUG_KEY + "Saving game..."); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedDescription("Saved game at " + DateTime.Now); SavedGameMetadataUpdate updatedMetadata = builder.Build(); byte[] savedData = SaveLoadController.GetInstance().CreateSaveObject(); savedGameClient.CommitUpdate(saveGameMetaData, updatedMetadata, savedData, OnSavedGameOpened); EventManager.TriggerEvent(EventTypes.DONE_SAVING_GAME); } else if (isLoading) { isLoading = false; LoadGameData(saveGameMetaData); } } else { CheckForSaveGame(); /*Debug.LogError(DEBUG_KEY + "Error opening/updating save game. Request status: " + status); * Debug.LogError(DEBUG_KEY + "Metadata: " + game); * Debug.LogError(DEBUG_KEY + "filename: " + game.Filename); * Debug.LogError(DEBUG_KEY + "isOpen: " + game.IsOpen); * Debug.LogError(DEBUG_KEY + "totaltimeplayed: " + game.TotalTimePlayed); * Debug.LogError(DEBUG_KEY + "lastmodifiedstamp: " + game.LastModifiedTimestamp);*/ } }
static void SaveGame(ISavedGameMetadata game, byte[] savedData, TimeSpan totalPlaytime) { #if UNITY_ANDROID && !UNITY_EDITOR ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); builder = builder .WithUpdatedPlayedTime(totalPlaytime) .WithUpdatedDescription("Saved game at " + DateTime.Now); /* * if (savedImage != null) * { * // This assumes that savedImage is an instance of Texture2D * // and that you have already called a function equivalent to * // getScreenshot() to set savedImage * // NOTE: see sample definition of getScreenshot() method below * * byte[] pngData = savedImage.EncodeToPNG(); * builder = builder.WithUpdatedPngCoverImage(pngData); * }*/ SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(game, updatedMetadata, savedData, OnSavedGameWritten); #endif }
// Write the save game void WriteSaveGame(ISavedGameMetadata game, byte [] savedData, Action <SavedGameRequestStatus, ISavedGameMetadata> callback) { // Check if signed in if (PlayGamesPlatform.Instance.localUser.authenticated) { SavedGameMetadataUpdate updatedMetadata = new SavedGameMetadataUpdate.Builder() .WithUpdatedPlayedTime(TimeSpan.FromMinutes(game.TotalTimePlayed.Minutes + 1)) .WithUpdatedDescription("Saved at: " + DateTime.Now) .Build(); ISavedGameClient savedGameClient = PlayGamesPlatform.Instance.SavedGame; savedGameClient.CommitUpdate(game, updatedMetadata, savedData, callback); // print ("write success"); // t2.text = "write success"; // SaveDataManager.instance.ToJSON (); // t2.text = t2.text + " " + SaveDataManager.instance.json; } else { // t2.text = "sign in first"; } }
public void SaveGame() { SaveStructure saveST = new SaveStructure(); saveST.SavePrepare(); #if UNITY_ANDROID if (false == PlayGamesPlatform.Instance.localUser.authenticated) { PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().EnableSavedGames().Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate(); Social.localUser.Authenticate((bool success, string msg) => { if (false == success) { Debug.Log("저장 실패 - 로그인 불가"); return; } }); } Debug.Log("로그인 돼있음"); BinaryFormatter bt = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bt.Serialize(ms, saveST); byte[] savingData = ms.ToArray(); Debug.Log("시리얼라이즈 - 현재 세이빙 데이타 랭쓰" + savingData.Length); ms.Dispose(); ms.Close(); Debug.Log("시리얼라이즈 완료 , 스트림 클로즈 후 " + savingData.Length); ISavedGameClient saveClient = PlayGamesPlatform.Instance.SavedGame; saveClient.OpenWithAutomaticConflictResolution(Constant.saveFileNameInGPGSCloud, DataSource.ReadCacheOrNetwork, ConflictResolutionStrategy.UseMostRecentlySaved, (status, metaData) => { if (status != SavedGameRequestStatus.Success) { Debug.Log("저장 실패 - 메타데이타 오픈 불가"); return; } Debug.Log("메타데이타 오픈."); SavedGameMetadataUpdate updatedMetaData = new SavedGameMetadataUpdate.Builder().WithUpdatedDescription(DateTime.Now + "at saved").Build(); Debug.Log("저장 준비- 현재 세이빙데이타 렝쓰 " + savingData.Length); saveClient.CommitUpdate(metaData, updatedMetaData, savingData, (saveStatus, newMetaData) => { if (status != SavedGameRequestStatus.Success) { Debug.Log("저장 실패 - 저장이 불가"); // return; } else { st = saveST; savedLang = saveST.lang; savedGame = true; savedDate = InGameTime.DeepCopy(saveST.savedDate); Debug.Log("저장 성공"); } }); }); #else BinaryFormatter bt = new BinaryFormatter(); FileStream file = File.Create(Constant.saveDataAllPath); bt.Serialize(file, saveST); file.Close(); #endif }
public static void WriteSaveData(string fileName, byte[] data, Action <bool> callback) { if (!isAuthenticated || data == null || data.Length == 0) { return; } if (currentSavedGameMetadata != null && currentSavedGameMetadata.IsOpen) { Debug.Log("GPGSManager - start commit update saved game"); SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(currentSavedGameMetadata, updatedMetadata, data, (commitStatus, newMetadata) => { Debug.Log("GPGSManager - commit saved game request status: " + commitStatus); if (commitStatus == SavedGameRequestStatus.Success) { callback?.Invoke(true); } else { callback?.Invoke(false); } OpenSaveData(); }); } else { Debug.Log("GPGSManager - start open savedGameMetadata"); OpenSaveData(fileName, (openStatus, metadata) => { if (openStatus == SavedGameRequestStatus.Success) { Debug.Log("GPGSManager - start commit update saved game"); SavedGameMetadataUpdate.Builder builder = new SavedGameMetadataUpdate.Builder(); SavedGameMetadataUpdate updatedMetadata = builder.Build(); savedGameClient.CommitUpdate(metadata, updatedMetadata, data, (commitStatus, newMetadata) => { Debug.Log("GPGSManager - commit saved game request status: " + commitStatus); if (commitStatus == SavedGameRequestStatus.Success) { callback?.Invoke(true); } else { callback?.Invoke(false); } OpenSaveData(); }); } else { Debug.Log("GPGSManager - open savedGameMetada is failed"); } }); } }