Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与玩家参考统一保存硬币的问题_C#_Unity3d - Fatal编程技术网

C# 与玩家参考统一保存硬币的问题

C# 与玩家参考统一保存硬币的问题,c#,unity3d,C#,Unity3d,我使用PlayerPrefs在每个关卡上保存收集的硬币。在差异游戏中,当找到一个物品时,玩家得到一枚硬币,并将其与玩家参考一起保存。该硬币值用于在水平选择屏幕中显示。问题是当我第一次完成关卡时,它在关卡选择屏幕上显示收集的硬币,当我再完成几次时,关卡选择屏幕上的值保持不变,硬币没有加起来: 这是我用PlayerPrefs保存硬币的脚本: if (result.collider.CompareTag("Images")) {

我使用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();        
    }


除非它在代码中的其他地方,否则您在每次运行关卡时都会设置您的硬币,而不会先读取它。每次启动关卡时,您都应首先读取硬币数据,否则将被覆盖

在级别开始时,您应该包括

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

除非它在代码中的其他地方,否则您在每次运行关卡时都会设置您的硬币,而不会先读取它。每次启动关卡时,您都应首先读取硬币数据,否则将被覆盖

在级别开始时,您应该包括

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

谢谢,这很有效,我把
PlayerPrefs.GetInt(“硬币”,0)
放在更新方法的顶部,这就是它不起作用的原因谢谢,这很有效,我把
PlayerPrefs.GetInt(“硬币”,0)
放在更新方法的顶部,这就是它不起作用的原因