【发布时间】:2019-10-20 23:01:59
【问题描述】:
您好,我使用 Unity 制作了一款适用于 Android 的游戏。我的问题是,当我按下主页按钮,然后从任务栏菜单或单击图标重新启动游戏时,我的游戏正在从场景 0 重新启动,而不是从上一个状态重新启动。这并不总是发生。有时会,有时不会。这是我的设备(Samsumg Galaxy S7)的问题还是我可以通过代码纠正的问题?
【问题讨论】:
您好,我使用 Unity 制作了一款适用于 Android 的游戏。我的问题是,当我按下主页按钮,然后从任务栏菜单或单击图标重新启动游戏时,我的游戏正在从场景 0 重新启动,而不是从上一个状态重新启动。这并不总是发生。有时会,有时不会。这是我的设备(Samsumg Galaxy S7)的问题还是我可以通过代码纠正的问题?
【问题讨论】:
这在每个操作系统上都有不同的处理方式。对于 Android,有很多东西决定了 App 的状态是否应该在内存中。这包括内存大小、Android 版本、后台运行的应用数量。
因此,您有责任实施保存退出机制。这可以通过OnApplicationPause 或OnApplicationFocus 函数来完成。
下面的代码是您应该做什么的示例。您需要对其进行修改并添加更多信息,例如球员信息、得分、比赛、球员位置。将它们保存为 json 文件会很有意义。
string leveName = "";
void Start()
{
//Get current scene name
leveName = SceneManager.GetActiveScene().name;
}
void OnApplicationPause(bool paused)
{
//Save scene Name if paused, otherwise load last scene
if (paused)
{
PlayerPrefs.SetString("myLastScene", leveName);
PlayerPrefs.Save();
}
else
{
//Load last scene
string lastScene = PlayerPrefs.GetString("myLastScene");
SceneManager.LoadScene(lastScene);
}
}
【讨论】: