public static void SaveLocalUserData(string userId) { BinaryFormatter bf = new BinaryFormatter(); List <UserDataBinary> playerDataList; FileStream file = File.Open(PersistentDataPath + "/PlayerData.dat", FileMode.OpenOrCreate); if (file.Length > 0) { playerDataList = (List <UserDataBinary>)bf.Deserialize(file); } else { playerDataList = new List <UserDataBinary>(); } bool found = false; foreach (UserDataBinary player in playerDataList) { if (player.UserID == userId) { player.BoneNumber = ApplicationModel.CurrentBoneNumber; player.Level = ApplicationModel.CurrentLevel; player.ModifiedDatetimeBinary = DateTime.Now.ToBinary(); Debug.Log(String.Format("Local user data saved: {0}", player.UserID)); found = true; break; } } if (!found) { UserDataBinary newPlayer = new UserDataBinary(); newPlayer.InitFromApplicationModel(); Debug.Log(String.Format("Local user data saved to new file: {0}", newPlayer.UserID)); playerDataList.Add(newPlayer); } bf.Serialize(file, playerDataList); file.Close(); }