我正在 Unity 中开发 Oculus Go 应用程序,发现在耳机中退出应用程序不会调用onApplicationQuit()
. 有谁知道一个很好的解决方法?我真的需要一些只在应用程序关闭时执行的代码。
我尝试将OnDestroy()
其用作解决方法,但在关闭应用程序时也不会调用它。OnPaused()
当您进入询问您是否要退出的 Oculus 对话框时调用,而不是在您实际选择退出时调用。
正如您已经说过的,OnApplicationQuit()
从 Oculus 菜单退出 Go 上的应用程序时从未真正调用过。相反,应用程序被置于暂停状态,对此几乎无能为力。除了挂钩到本机代码或一些 android java 插件(其中的细节不是我的强项)之外,没有太多已知的解决方法。
部分原因是因为解决方法确实取决于应用程序的需求,保存状态或PlayerPrefs
可以在OnApplicationPause()
方法中完成。
private void OnApplicationPause(bool isPaused)
{
if (isPaused) {
// ..
PlayerPrefs.Save();
}
}
对于单人游戏/用户游戏/应用程序,这可能是最简单的解决方案。对于多人游戏,您可以订阅 OVR 的连接状态更改事件并处理刚刚从反面退出的用户:
using Oculus.Platform;
using Oculus.Platform.Models;
// ...
Net.SetConnectionStateChangedCallback((Message<NetworkingPeer> message) => {
if (message.Data.State == PeerConnectionState.Closed) {
Debug.Log("The user MOST LIKELY quit the app.");
}
});
这不是一个完美的解决方案,但由于 OVR 没有在他们的文档中提供任何内容,并且他们没有在他们的论坛中回答有关此主题的问题,因此这是一个足够体面的解决方法。
唯一的其他选择是鼓励用户从您的应用程序中单击某种“退出”按钮,该按钮调用UnityEngine.Application.Quit()
确实会调用该OnApplicationQuit()
方法。
干杯。
如果您正在为 Oculus GO 开发和发布,那么您将需要使用他们的 Unity SDK,后者提供了正确退出应用程序的功能。
我猜您不能使用 OnApplicationQuit,因为在 Oculus Go 要求中,后退按钮只能用于将用户返回到 Oculus Go 主菜单。
首先,您需要确保您的项目中有 OVRmanager,您可以从 Oculus 开发者网站下载并导入 Unity SDK。
然后使用下面的脚本退出应用程序,当您按下控制器上的返回按钮时,它会将您带回 Oculus Go 主菜单。
if (OVRInput.GetDown(OVRInput.Button.Back)
{
OVRManager.PlatformUIConfirmQuit();
}