【问题标题】:Unity PlayerPrefs only save 1 item to allUnity PlayerPrefs 仅将 1 个项目保存到所有
【发布时间】:2017-02-25 03:43:14
【问题描述】:
using UnityEngine;

使用 System.Collections; 使用 UnityEngine.UI;

公共类 ItemScript : MonoBehaviour {

public Click click;
public Text MPSInfo;
public ItemManager[] items;

void Start()
{
    LoadItems();
    StartCoroutine(AutoTick());
}

void Update()
{
    MPSInfo.text = "Money/Sec: " + MoneyPerSec();
}

public int MoneyPerSec()
{
    int tick = 0;
    foreach(ItemManager item in items)
    {
        tick += item.count * item.tickValue;
        PlayerPrefs.SetInt(item.ItemName + "Count", item.count);
        PlayerPrefs.SetFloat(item.ItemName + "Cost", item.cost);
        print(item.ItemName);
        print(item.count);
        print(item.cost);
    }
    return tick;
}

public void AutoMoneyPerSec()
{
    Click.money += MoneyPerSec();
}

IEnumerator AutoTick()
{
    while(true)
    {
        AutoMoneyPerSec();
        yield return new WaitForSeconds(1);
    }
}

public void LoadItems()
{
    foreach(ItemManager item in items)
    {
        item.count = PlayerPrefs.GetInt(item.ItemName + "Count");
        item.cost = PlayerPrefs.GetFloat(item.ItemName + "Cost");
        print(item.ItemName);
        print(item.count);
        print(item.cost);
    }
}

}

我有这个脚本,我设置了 2 个项目,用于测试,但 Playerprefs 只为第二个项目和第一个项目保存第二个项目。它们的成本相同,而且数量相同。

【问题讨论】:

    标签: unity3d save


    【解决方案1】:

    你从编辑那里输入了什么items

    它们是否引用相同的GameObject

    【讨论】:

    • 刚刚使用'PlayerPrefs.DeleteAll()',现在它们的成本都是0。
    • Itemscript 位于我的 MPSInfo 文本中,这就是我放置物品的地方。
    • @Kalip 在我看来一切正常。您如何从外部放入此脚本中的项目?
    • @Kalip 现在,我能想到的唯一可能原因是itemManager 脚本可能有countcost 作为静态变量。确保它们不是。此外,尝试使用更多数量的项目,和/或为每个项目的countcost 分配一些默认值,并在foreach 循环中分配它们之前尝试print() 它们
    • 成本和数量不是一成不变的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多