From 7214c447a6b8c1e38bb527ddf859c58a4a8c36df Mon Sep 17 00:00:00 2001 From: huyufei Date: Fri, 9 Aug 2024 14:29:21 +0800 Subject: [PATCH] =?UTF-8?q?Fix=EF=BC=9A=20=E4=BF=AE=E5=A4=8D=E4=B8=AD?= =?UTF-8?q?=E5=8F=B0=E6=95=B0=E6=8D=AE=E5=AD=98=E5=82=A8=E7=9A=84=20BUG?= =?UTF-8?q?=E3=80=82=20=E8=B0=83=E6=95=B4=E5=86=99=E5=85=A5=E7=AD=96?= =?UTF-8?q?=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/Code/Model/GuruSDKModel.cs | 33 ++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/Runtime/Code/Model/GuruSDKModel.cs b/Runtime/Code/Model/GuruSDKModel.cs index 2f8949e..dd47c44 100644 --- a/Runtime/Code/Model/GuruSDKModel.cs +++ b/Runtime/Code/Model/GuruSDKModel.cs @@ -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 _bLevel; private readonly BindableProperty _bPlay; @@ -55,8 +56,8 @@ namespace Guru public GuruSDKModel() { + // 读取内存值 GuruSDKSerializedModel model = LoadModel(); - _uid = model.uid; _noAds = model.no_ads; _bLevel = new BindableProperty(model.b_level); @@ -64,6 +65,7 @@ namespace Guru _purchased = model.purchased; } + public int BLevel { get => _bLevel.Value; @@ -150,9 +152,10 @@ namespace Guru } /// - /// 保存至数据 + /// 保存至 PlayerPrefs 数据 /// - private void SaveToPlayerPrefs() + /// + private void SaveToPlayerPrefs(bool writeToDisk = false) { var model = new GuruSDKSerializedModel() { @@ -164,21 +167,29 @@ namespace Guru }; var json = JsonUtility.ToJson(model); - PlayerPrefs.SetString(SaveKey, json); + if (!string.IsNullOrEmpty(json)) + { + PlayerPrefs.SetString(SaveKey, json); + } + + if(writeToDisk) + { + PlayerPrefs.Save(); // 写入到磁盘 + } } /// /// 保存数据 /// - /// - public void Save(bool force = false) + /// + 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