退出应用时保存游戏

Den*_*Liu 4 c# unity-game-engine

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

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

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

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

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

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

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

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

谢谢

丹尼斯

Pro*_*mer 6

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

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

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

你不能依靠操作系统来处理这个问题.你必须自己处理它.

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

是和否.

你应该不是在为了做一些事情被按下HOME键检测.但是,您应该检测游戏暂停和恢复的时间.

这就是OnApplicationPause函数的用途.另一个类似的功能是,OnApplicationFocusOnApplicationPause更适合这个.

OnApplicationPause( bool pauseStatus )按下Home键时被调用,pauseStatus参数true.重新打开应用程序时,pauseStatus参数为false.

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

您可以根据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
    }
}
Run Code Online (Sandbox Code Playgroud)