退出应用时保存游戏

时间:2017-01-06 10:21:09

标签: c# unity3d

我正在制作一个团结C#的游戏。我有代码保存本地并为游戏保存云。按下保存游戏后退出按钮退出。

但我在这里保存的游戏有问题。当某人或玩家按下设备移动设备上的主页按钮时,游戏将退出并在后台运行。

如果播放器重启设备,则在后台运行的游戏将不会保存到本地或云端。这就是问题所在。

所以在统一当主页按钮按下设备移动时,统一会做什么?这是暂停应用程序/游戏或其他什么? 如果玩家按下主页按钮,我们可以做什么?

如果暂停应用程序/游戏,我们可以在玩家按下主页按钮时首先检测到它,我们可以保存游戏吗? (我的意思是在按下主页按钮后运行代码)

或者根据您的经验,如果玩家按下主页按钮会怎么做?这是为了让玩家不会丢失游戏数据。

请详细说明我找到解决方案。

任何帮助对于继续比赛都会很棒:)

由于

丹尼斯

1 个答案:

答案 0 :(得分:6)

  

所以在统一当主页按钮按下设备移动时会有什么统一性   做什么?

Unity不控制这一点。操作系统。您没有提到哪个操作系统(Android或iOS),但您可以研究每个操作系统按下主页按钮时会发生什么。

我可以告诉你的是,该应用在Android上暂停了一段时间。有时,Android会卸载资产。这取决于许多因素,例如应用程序已暂停多长时间,打开的应用程序数量以及设备上可用的内存。

您无法依靠操作系统来处理此问题。你必须自己处理它。

  

如果暂停应用程序/游戏,我们可以先检测到它   玩家按下我们可以保存游戏的主页按钮?

是和否。

您应该检测何时按下主页按钮才能执行某些操作。 然后检测游戏暂停和恢复的时间。

这是OnApplicationPause函数的用途。另一个类似的函数是OnApplicationFocus,但OnApplicationPause对此更适合。

按下主页按钮时调用OnApplicationPause( bool pauseStatus )时,pauseStatus参数为true。重新打开应用程序时,pauseStatus参数为false

  

这是为了让玩家不会丢失游戏数据

saveload数据取决于pauseStatus值。

以下是该怎么做:

void OnApplicationPause(bool pauseStatus)
{
    if (pauseStatus)
    {
        Debug.Log("Paused");
        //Save Player Settings
        //https://stackoverflow.com/q/40078490/3785314
    }
    else
    {
        Debug.Log("resumed");
        //Load Player Settings
        //https://stackoverflow.com/q/40078490/3785314
    }
}