首页 > 解决方案 > 如何使用 Unity 的 PlayerPrefs 跳过关卡?

问题描述

每个人。

我已经有一段时间了。基本上,我正在开发一款手机游戏,我想设置我的广告按钮以在有人按下它时跳过一个关卡。现在它会跟踪我离开的位置,但是当我按下“重新开始”按钮并跳过我在尝试重新启动之前刚刚离开的级别时,它不会重置。

我尝试使用两个不同的函数来完成这项工作——但首先,这里是重点和问题——int "sceneNo" 和 StartOver 函数。我使用 PlayerPrefs 设置了 sceneNo。向上。

sceneNo = PlayerPrefs.GetInt("Level", SceneManager.GetActiveScene().buildIndex);

而且,这是 StartOver 的代码。

public void StartOver()
{
    SceneManager.LoadScene(1);
    PlayerPrefs.DeleteKey("level");
    sceneNo = (SceneManager.GetActiveScene().buildIndex);
}

至于我尝试重置游戏的两个不同功能......

public void SkipMe()
{

    sceneNo = SceneManager.GetActiveScene().buildIndex + 1;
    SceneManager.LoadScene(PlayerPrefs.GetInt("Level", sceneNo));
}

而现在的...

public void SkipAdFunction()
{
    SceneManager.LoadScene(sceneNo);
    Answer.text = "";
    PlayerPrefs.SetInt("Level", sceneNo + 1);
    sceneNo = (SceneManager.GetActiveScene().buildIndex);

}

最后,这是执行此操作的脚本的其余部分。

void HandleShowResult(ShowResult result) { if (result == ShowResult.Finished) { Playable.GetComponent<LoadScene>().SkipMe();

这两个脚本都做同样的事情。对于如何解决该问题,我们将不胜感激。先感谢您。

标签: c#androidunity3d

解决方案


StartOver()你提到这个

 PlayerPrefs.DeleteKey("level");

但是在SkipMe(), SkipAdFunction()你写了这个

PlayerPrefs.SetInt("Level", sceneNo + 1);

看到Level,你提到了不同的键,键是区分大小写的,所以改变它


推荐阅读