在我的一个项目中,我最初开始使用浮点数,但过了一会儿,我意识到它的精度并不完全符合我的期望.我有一个自动化的系统,它每秒增加X枚硬币的价值,并且鉴于该浮点数很大(超过200万),因此不再增加那么小的价值.
所以我的下一个电话是使用double而不是float.在将所有内容从float更改为double之后,我意识到我将值存储在PlayerPrefs中,我想我不能在其中存储double?所以现在我有点困惑.
如何从PlayerPrefs中提取现有的float信息并将其float值放入double中,然后将该double值保存在PlayerPrefs中?我有点困惑,所以我正在寻求帮助.
这是我的代码的一部分:
// old
// public float totalP;
// new
public double totalP;
void OnEnable()
{
if (!PlayerPrefs.HasKey ("game_totalP"))
{
PlayerPrefs.SetFloat ("game_totalP", totalP);
}
else
{
totalP = PlayerPrefs.GetFloat ("game_totalP");
}
}
任何帮助,将不胜感激!
解决方法:
您可以使用PlayerPrefs节省一倍.对此合适的PlayerPrefs函数是PlayerPrefs.SetString而不是PlayerPrefs.GetFloat.
双重保存:
public double totalP;
救:
将其转换为字符串
string totalPStr = totalP.ToString();
另存为字符串
PlayerPrefs.SetString("game_totalP", totalPStr)
加载:
加载为字符串
string tempPStr = PlayerPrefs.GetString("game_totalP");
将字符串转换为双精度
totalP = double.Parse(tempPStr, System.Globalization.CultureInfo.InvariantCulture);
如果遇到totalP.ToString()的科学计数法问题,请将其更改为totalP.ToString(“ F6”).最后,我认为您应该放弃PlayerPrefs并使用序列化来保存数据.有关更多信息,请参见this.
原文地址:https://codeday.me/bug/20191025/1927258.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。