团结拯救foreach?

时间:2016-10-12 15:17:14

标签: unity3d static save load

我对团结有点新意,请帮助我。

我怎样才能保存这样的东西?

public float GetMoneyPerSec()
{
    float tick = 0;
    foreach (UpgradeManager item in items)
    {
        tick += item.tickValue;
    }
    return tick;
}

3 个答案:

答案 0 :(得分:2)

保存'文件中的数据可以使用xml或JSON序列化为文本文档,并在游戏运行时反序列化。这比播放器首选项更方便,因为您可以轻松地在任何文本编辑器中复制或编辑值。

要在场景之间保留数据,只需确保保存数据的类是静态类(使用单例方法),或者设置为“不要在加载时销毁”的类。

答案 1 :(得分:1)

您可以使用PlayerPrefs。我们假设您有类似float tick = GetMoneyPerSec()的内容,然后存储它:

PlayerPrefs.SetFloat("MoneyPerSec", tick);

并使用以下命令检索它:

float f = PlayerPrefs.GetFloat("MoneyPerSec");

答案 2 :(得分:0)

Gerard RocheSakkas的回答是正确的 要在场景之间传递数据,您只需要PlayerPrefs 根据您的代码,保存ticks的方法是:

public float CalculateMoneyPerSec()
{
    float tick = 0;
    foreach (UpgradeManager item in items)
    {
        tick += item.tickValue;
    }
    // save the value after calculation
    PlayerPrefs.SetFloat("MoneyPerSecond", tick);
    return tick;
}

从另一个场景中获取它:

// Another Scene
public float GetMoneyPerSec()
{
    float tick = PlayerPrefs.GetFloat("MoneyPerSecond");
}

保存PlayerPrefs中的数据被认为是安全的,因为当PlayerPrefs将数据写入硬盘时PlayerPref.Save()调用OnApplicationQuit(),这是传输数据的最有效方式