【问题标题】:Unity Android game restart after being backgroundedUnity Android游戏在后台重启后重启
【发布时间】:2019-10-20 23:01:59
【问题描述】:

您好,我使用 Unity 制作了一款适用于 Android 的游戏。我的问题是,当我按下主页按钮,然后从任务栏菜单或单击图标重新启动游戏时,我的游戏正在从场景 0 重新启动,而不是从上一个状态重新启动。这并不总是发生。有时会,有时不会。这是我的设备(Samsumg Galaxy S7)的问题还是我可以通过代码纠正的问题?

【问题讨论】:

    标签: c# android unity3d


    【解决方案1】:

    这在每个操作系统上都有不同的处理方式。对于 Android,有很多东西决定了 App 的状态是否应该在内存中。这包括内存大小、Android 版本、后台运行的应用数量。

    因此,您有责任实施保存退出机制。这可以通过OnApplicationPauseOnApplicationFocus 函数来完成。

    下面的代码是您应该做什么的示例。您需要对其进行修改并添加更多信息,例如球员信息、得分、比赛、球员位置。将它们保存为 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);
        }
    }
    

    【讨论】:

    • 我正在使用 OnApplicationPause 方法,但我没有实现退出机制的保存。一旦我可以访问我的电脑,我就会这样做,我会告诉你它是否有效。感谢您的帮助!
    • 好的。您还应该查看here,了解如何使用 josn 保存多个游戏数据。
    • 抱歉花了这么长时间,但我没有时间尝试这个。现在我已经完成了它并且它有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多