【问题标题】:Problem with saving coins in Unity with PlayerPrefs使用 PlayerPrefs 在 Unity 中保存硬币的问题
【发布时间】:2021-03-19 14:21:02
【问题描述】:

我正在使用 PlayerPrefs 来保存每个级别收集的硬币。在差异游戏中,当找到一个项目时,玩家会得到一个硬币,并使用 PlayerPrefs 保存。并且该硬币值用于显示在级别选择屏幕中。问题是当我第一次完成关卡时,它在关卡选择屏幕中显示收集的硬币,当我再完成几次时,关卡选择屏幕上的值保持不变,硬币没有加起来:

这是我使用 PlayerPrefs 保存硬币的脚本:


if (result.collider.CompareTag("Images"))
                {
                    Debug.Log("Hit");
                    result.collider.enabled = false;
                    tmpCircle = Instantiate(krug1);
                    tmpCircle.SetActive(true);
                    tmpCircle.transform.SetParent(canvas.transform, true);
                    tmpCircle.transform.position = new Vector3(result.point.x, result.point.y, result.point.z);
                    tmpCircle.transform.localScale = new Vector3(transform.localScale.x * 2f, transform.localScale.y * 2f, transform.localScale.z);
                    circle.Play("CircleAnim");
                    score += 1;
                    diff -= 1;
                    coins += 1;
                    score1.text = " " + score;
                    PlayerPrefs.SetInt("Coins", coins);
                    PlayerPrefs.Save();
                    item.Play();
                }

这是我在 LevelSelection 屏幕中显示硬币的脚本:


void Start()
    {
        coins.text = PlayerPrefs.GetInt("Coins", 0).ToString();        
    }

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    除非它在您的代码中的其他位置,否则您在每次运行关卡时设置您的硬币,而无需先阅读它。每次开始关卡时都应先读​​取硬币数据,否则将被覆盖。

    在关卡的开头你应该包括

    void Start()
    {
        coins= PlayerPrefs.GetInt("Coins", 0);        
    }
    

    【讨论】:

    • 谢谢,这个成功了,我把PlayerPrefs.GetInt("Coins", 0)放在Update方法的顶部,这就是为什么它没有工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    相关资源
    最近更新 更多