为什么没有将值添加到PlayerPrefs文件中?

时间:2018-02-08 20:20:15

标签: c# unity3d

我正在尝试将值保存到Unity中我的移动游戏的PlayerPrefs中的文件中,但是在玩游戏后文件不会更新。

public class gameManager : MonoBehaviour {

    private static gameManager instance;
    public static gameManager Instance { get { return instance; } }

    public int currentSkinIndex;
    public int currency  = 0;
    public int skinAvailability = 0;

    private void Awake()
    {
        instance = this;
        DontDestroyOnLoad (gameObject);

        if (PlayerPrefs.HasKey ("currency")) {
            // We had a previous session
            currentSkinIndex = PlayerPrefs.GetInt ("currentSkinIndex");
            currency = PlayerPrefs.GetInt ("currency");
            skinAvailability = PlayerPrefs.GetInt ("skinAvailability");
        } else {
            Save ();
        }
    }

    public void Save ()
    {
        PlayerPrefs.SetInt ("currentSkin", 0);
        PlayerPrefs.SetInt ("currency", 0);
        PlayerPrefs.SetInt ("skinAvailability", 1);
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你写的逻辑有问题!在Awake()中,您有两个条件=>如果有钥匙,如果不是!

你想将一些值保存到playerprefs并且你已经有了保存功能,但是在Awake()你只需要在两个条件下调用它,这就是你的代码所说的:

  1. 搜索现有的播放器首选项,如果值存在,则检索它们
  2. 或者如果它们不存在,请按照我的命令将它们保存起来(保存功能逻辑=> currency = 0 , current skin = 0, skinAvailability = 1
  3. 然后什么也不做。请注意,所有这些都发生在Awake()
  4. 期间

    但是你玩游戏后获得的新价值也需要保存! 你不能拯救他们!

    你的代码 在我玩游戏后(和变量已经更改)说&#34;再次保存值&#34; < / p>

    你需要再次保存它们!例如,您可以在通过编写函数退出播放场景时执行此操作,或者如果您已经编写了该函数,则可以将其分配给一个名为savebtn的按钮,该按钮在单击时调用该函数。