微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c#-使用PlayerPrefs保存双打?

在我的一个项目中,我最初开始使用浮点数,但过了一会儿,我意识到它的精度并不完全符合我的期望.我有一个自动化的系统,它每秒增加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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐