【问题标题】:Unity2d: return to previous application on button clickUnity2d:单击按钮返回上一个应用程序
【发布时间】:2016-07-28 09:14:34
【问题描述】:

当我按下按钮关闭统一/关闭游戏应用程序时,有没有办法返回到我以前的游戏应用程序。基本上我有一个带有按钮的场景,如果玩家按下按钮,它将把他们带到一个新的水平(场景 1)。这是我想保存这个场景(场景 2)的地方,使用类似 playerprefs 的东西来密切关注它,这样如果我关闭游戏应用程序,或者关闭统一然后我重新打开并播放应用程序(不管我是什么场景我在)游戏应该自动带我回到场景 2。是否可以在按钮单击时返回到以前的应用程序(即使我关闭应用程序或游戏)? 因此,如果单击按钮,然后我退出应用程序和/或游戏,然后重新打开它并玩游戏,它应该会自动将我带回到退出的场景(场景 2)

【问题讨论】:

  • 当然可以将游戏恢复到关闭时的状态,但至于返回以前的应用程序,我对此表示怀疑,但这取决于我们正在谈论的平台关于。

标签: unity3d


【解决方案1】:

当应用程序退出事件被调用时,将当前场景保存为玩家偏好。

using UnityEngine.SceneManagement;

 void quitGame()
{
    Scene currentScene =  SceneManager.GetActiveScene();
    PlayerPrefs.SetString("lastSceneName",currentScene.name);
    Application.Quit();
}

以上代码会在应用退出时保存当前场景的名称。

现在,当您重新启动游戏并加载场景 (0) 时。在 Start() 或 Awake() 函数中调用以下方法。

void loadLastScene()
{
    if (PlayerPrefs.GetInt("isFirstTime") == 0) //this is to make sure this chunk of code doen't run on the very first usage.
    {
        PlayerPrefs.SetInt("isFirstTime", 1);
    }
    else if (PlayerPrefs.GetInt("isFirstTime") == 1)
    {
    SceneManager.LoadScene(PlayerPrefs.GetString("lastSceneName"));
    }
}

代码未经测试。

【讨论】:

  • 为什么使用PlayerPrefs.SetInt("isFirstTime", 1);?这不会影响下一次游戏启动的功能吗?为什么不将此标志存储在实例变量中?
  • 但是如果你再次退出应用再重新打开,场景将无法加载。
  • 好的让我解释一下,当应用程序第一次运行时,'PlayerPrefs.GetInt("isFirstTime");'将返回 '0' 并且条件将为假,因此游戏将按顺序进行,但当游戏第二次开始时,'PlayerPrefs.GetInt("isFirstTime");'将返回 1 并直接加载之前保存的场景。假设使用“quitGame”方法关闭游戏。否则应该有另一个异常处理条件。
  • 是的,你是对的。我不得不编辑。存在逻辑错误
猜你喜欢
  • 2015-12-24
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多