重新启动游戏时,分数不会重置

时间:2019-07-15 12:36:42

标签: c# unity3d 3d

我正在建立一个简单的足球点球大战。一旦球击中球门,得分将设置为1并保存该得分。游戏自行重置。如果游戏已自动重置,则应保留分数。问题是,当用户退出游戏并手动重新启动时,先前的得分尚未重置。如果发生这种情况,我希望分数重新设置。

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Goalcollide : MonoBehaviour
{
    public Text scoretext;  // Displays the score on the text
    public Text goaltext;  // to output goal message once the goal has been scored
    public int counter = 0;  // Socre counter.

    private void Awake()
    {
        if (PlayerPrefs.GetInt("counter") != 0)
        {
            counter = PlayerPrefs.GetInt("count");  
        }
    }
    void Start()
    {
        counter = PlayerPrefs.GetInt("count");
        //counter = 0;

        //scoretext.text = counter.ToString();
    }

    private void OnCollisionEnter(Collision collisionINFO)
    {
        if (collisionINFO.collider.name == "Goal Post")
        {
            counter += 1;  // Increments score each time
            PlayerPrefs.SetInt("count", counter);   // Saves the score
            scoretext.text = counter.ToString();    // Displayed score
            goaltext.text = "GOALLL";  // Displayed the message.
            FindObjectOfType<GameManager>().EndGame();  // The game is reset
        }

        if (collisionINFO.collider.name != "Plane")
        {
            FindObjectOfType<GameManager>().EndGame();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

停止使用PlayerPrefs

如果您只想在程序执行过程中保存分数,则您不应将其存储在PlayerPrefs中。

首先,您不应该在PlayerPrefs中存储游戏状态(它用于存储音量或首选控制方案:用户 preferences ),而在第二位置,它是在两次运行之间保留数据的位置。

由于不希望分数数据在两次运行之间保持不变,因此将其存储在最错误的位置。

执行此操作:

public class GameData {
   public static int score;
}

您现在有了一个可公开访问的静态变量,该变量将在场景加载边界范围内持久存在,但仅存在于RAM中而不存在于磁盘中。