Fix: 修复中台数据存储的 BUG。 调整写入策略
							parent
							
								
									49774c3281
								
							
						
					
					
						commit
						7214c447a6
					
				|  | @ -35,7 +35,8 @@ namespace Guru | |||
|     { | ||||
|         private const float SaveInterval = 3; | ||||
|         private const string SaveKey = "com.guru.sdk.model.save"; | ||||
|         private float _lastSavedTime = 0; | ||||
|         private DateTime _lastSavedTime = new DateTime(1970,1,1); | ||||
|          | ||||
|         private bool _noAds = false; | ||||
|         private readonly BindableProperty<int> _bLevel; | ||||
|         private readonly BindableProperty<int> _bPlay; | ||||
|  | @ -55,8 +56,8 @@ namespace Guru | |||
| 
 | ||||
|         public GuruSDKModel() | ||||
|         { | ||||
|             // 读取内存值 | ||||
|             GuruSDKSerializedModel model = LoadModel(); | ||||
|              | ||||
|             _uid = model.uid; | ||||
|             _noAds = model.no_ads; | ||||
|             _bLevel = new BindableProperty<int>(model.b_level); | ||||
|  | @ -64,6 +65,7 @@ namespace Guru | |||
|             _purchased = model.purchased; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public int BLevel | ||||
|         { | ||||
|             get => _bLevel.Value; | ||||
|  | @ -150,9 +152,10 @@ namespace Guru | |||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// 保存至数据 | ||||
|         /// 保存至 PlayerPrefs 数据 | ||||
|         /// </summary> | ||||
|         private void SaveToPlayerPrefs() | ||||
|         /// <param name="writeToDisk"></param> | ||||
|         private void SaveToPlayerPrefs(bool writeToDisk = false) | ||||
|         { | ||||
|             var model = new GuruSDKSerializedModel() | ||||
|             { | ||||
|  | @ -164,21 +167,29 @@ namespace Guru | |||
|             }; | ||||
|              | ||||
|             var json = JsonUtility.ToJson(model); | ||||
|             if (!string.IsNullOrEmpty(json)) | ||||
|             { | ||||
|                 PlayerPrefs.SetString(SaveKey, json); | ||||
|             } | ||||
|              | ||||
|             if(writeToDisk)  | ||||
|             { | ||||
|                 PlayerPrefs.Save(); // 写入到磁盘 | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         /// 保存数据 | ||||
|         /// </summary> | ||||
|         /// <param name="force"></param> | ||||
|         public void Save(bool force = false) | ||||
|         /// <param name="forceSave"></param> | ||||
|         public void Save(bool forceSave = false) | ||||
|         { | ||||
|             bool save = force || (Time.realtimeSinceStartup - _lastSavedTime>= SaveInterval); | ||||
|             if (save) | ||||
|             bool writeToDisk = forceSave || (DateTime.Now - _lastSavedTime)>= TimeSpan.FromSeconds(SaveInterval); | ||||
|             if (writeToDisk) | ||||
|             { | ||||
|                 _lastSavedTime = Time.realtimeSinceStartup; | ||||
|                 SaveToPlayerPrefs(); | ||||
|                 _lastSavedTime = DateTime.Now; // 超过间隔需要强制写入 | ||||
|             } | ||||
|             SaveToPlayerPrefs(writeToDisk); // 每次保存都要设置到 PlayerPrefs 内 | ||||
|         } | ||||
|          | ||||
|         #endregion | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue