Unity Firebase Database读取值无法通过PlayerPrefs保存float值问题
Firebase读取金币数值后PlayerPrefs存储失效问题
问题表现
- 实现目标:从Firebase Database读取coins(金币)数值,通过PlayerPrefs完成本地存储
- 故障情况:数据库读取逻辑运行正常,第一个
print()可正确打印从数据库读取到的目标数值,但该数值无法通过PlayerPrefs成功保存,控制台无任何报错信息 - 排查记录:尝试了多种与贴出代码逻辑等价的实现方案,均未生效,所有方案都卡在PlayerPrefs保存环节
- 补充测试结果:除int、float类型外,其余类型变量均可正常读取存储,string类型读写无任何问题,现象反常
原有实现代码:
await databaseReference.Child(FirebaseAuth.DefaultInstance.CurrentUser.UserId.ToString()).Child("rockets").GetValueAsync().ContinueWith((load => { if (load.IsCanceled) { return; } else if (load.IsFaulted) { return; } else { DataSnapshot coins = load.Result; print(coins.Value); PlayerPrefs.SetFloat("coins", (int)coins.Value); PlayerPrefs.Save(); print("COINS SET: " + coins.Value); } }));
解决方案
调整数据库存储格式绕开类型兼容问题:不在数据库中以int类型存储数值,而是将数值以string类型存储,读取到字符串后将其解析为对应数值类型,再传入PlayerPrefs保存,该方案可正常生效。
内容的提问来源于stack exchange,提问作者Dindi
相关产品推荐
相关产品推荐

