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