【问题标题】:Does Unity3D have an app state on iOS and Android?Unity3D 在 iOS 和 Android 上是否有应用状态?
【发布时间】:2016-08-01 21:32:45
【问题描述】:

在 iOS 和/或 Android 部署的基于 Unity3D 的应用上,当应用在用户暂停后恢复时,哪些信息可供应用使用?它是从中断处继续,还是应用程序从头开始?

如果应用程序从头开始,我可以利用什么来恢复它的状态,还是我必须手动实现一个备忘录(模式)?我可以订阅任何 Unity3D 事件来准备暂停的应用程序吗?

【问题讨论】:

    标签: android ios unity3d suspend


    【解决方案1】:

    按下播放后,您将无法控制其构建状态。

    Unity 在构建时可能会在内部使用它,但在重建时它似乎会再次经历所有状态,例如编译脚本、着色器内容、构建版本控制、证书身份验证、构建位置等。

    如果您手头有 Unity 源代码和修改后的构建管道,则这些无效。您可以在那里实现 memento 以检查哪些内容发生了变化,并忽略未更改的状态。

    这些与游戏代码或事件无关。

    【讨论】:

    • 所以,如果我理解正确的话,Unity 基本上会从头开始重新启动应用程序,而不管 iOS 或 Android 上的任何先前“暂停”状态如何?就像关闭 Windows 或 OSX 上的应用程序会从头开始一样?
    • 从头开始。在 Windows、OSX、iOS 上,如果目录保持不变,它会替换现有文件,并且 Unity 中的临时文件(所有+Android)替换为相同的构建 ID。
    【解决方案2】:

    只要应用程序留在内存中,它就会在暂停后恢复。

    您可以使用OnApplicationPause (bool) 来捕捉应用程序何时发送到后台并在那里进行一些序列化。如果应用程序随后从内存中删除(因为用户关闭它或系统内存不足),您可以在应用程序重新启动时从该数据中重新加载之前的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多