如何保持用户得分并在下一个场景中加载?

时间:2014-07-02 22:20:25

标签: c# unity3d

问题:我需要用户得到的分数被传递到下一个场景,没有什么复杂的,所以它可以说'做得好你得分'+得分。游戏结构由三个场景组成,即开始,播放,结束。我需要从比赛场景到最终场景的分数。

问题:我该怎么做?我看过单身人士和DontDestroyOnLoad功能,但我不知道如何使用它们或者附加它们的内容以及要保存的游戏对象。

public class Score : MonoBehaviour
{
    public int score = 0;                   

    void Awake ()
    {
        InvokeRepeating("increaseScore", 1, 1);
    }

    void Update ()
    {
        score++;
        // Set the score text.
        guiText.text = "Score: " + score;
    }
}

如果有帮助,这是我的评分代码。

2 个答案:

答案 0 :(得分:1)

您可以使用PlayerPrefs.SetIntPlayerPrefs.GetInt

// Save score to prefs before scene is destroyed
PlayerPrefs.SetInt("score", score);

然后:

// Load score when new scene is loaded
score = PlayerPrefs.GetInt("score");

或者,在您的Score类'Awake函数中,使用DontDestroyOnLoad以便其GameObject不会被销毁:

DontDestroyOnLoad(gameObject);

答案 1 :(得分:1)

为分数创建一个带静态变量的静态类。这是最简单的解决方案,您无需使用playerPrefs。

public static ScoreManager
{
    private static int score = 0;

    public static void setScore(int s)
    {
        score = s;
    }

    public static int getScore()
    {
        return score;
    }
}

无论你去哪个场景,静态课程在整个程序的执行过程中都会保持活跃状态​​。