统一保存foreach?

Unity saving foreach?

我对 Unity 有点陌生,请帮助我。

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

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

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

PlayerPrefs.SetFloat("MoneyPerSec", tick);

并通过以下方式检索:

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

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

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

Gerard Roche and Sakkas的答案是正确的。
场景间传递数据,只需要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中保存数据被认为是安全的,因为PlayerPrefsOnApplicationQuit()时调用PlayerPref.Save()将数据写入硬盘,这是最有效的方式传输数据。