F8Framework icon indicating copy to clipboard operation
F8Framework copied to clipboard

FF8.Storage如果仅设置了私有数据,并且数据类型为struct,将无法读取

Open ZIWaters opened this issue 1 year ago • 1 comments

FF8.Storage如果仅设置了私有数据,并且数据类型为struct,将无法读取 直觉告诉我这有问题,我的测试代码如下:

FF8.Storage.Clear();
StructInfo Info1 = new StructInfo("initial_ZIM_1");
//FF8.Storage.SetObject("Key5", new StructInfo("anyone"));         // 取消这行注释,将可以正常工作

// 设置UserId,用户私有的Key
FF8.Storage.SetUser("1");
FF8.Storage.SetObject("Key5", Info1, user: true);

// 取出数据
FF8.Storage.SetUser("1");
StructInfo info1 = FF8.Storage.GetObject<StructInfo>("Key5", user: true);
LogF8.Log(info1.Initial);

运行代码,日志会打印空字段 而如果将代码中第三行取消注释,则可以正常工作 另外,struct类型改为class似乎一样无法工作

最后,感谢您的框架开源和无私奉献,这对我这类unity新手来说很有帮助

ZIWaters avatar Jul 24 '24 03:07 ZIWaters

找到问题了,获取数据的key拼接user,下个版本修复。PlayerPrefs.HasKey(key)改为PlayerPrefs.HasKey(GetKeywords(key, user))即可。

         public T GetObject<T>(string key, bool user = false)
         {
             if (PlayerPrefs.HasKey(key))
             {
                 string jsonString = PlayerPrefs.GetString(GetKeywords(key, user));
                 return Util.LitJson.ToObject<T>(jsonString);
             }

             return default(T);
         }

TippingGame avatar Jul 31 '24 07:07 TippingGame

非常感谢您解决这个问题

ZIWaters avatar Aug 26 '24 02:08 ZIWaters