我正在Unity中使用Oculus Go应用程序,发现退出耳机中的应用程序不会调用onApplicationQuit()
。有谁知道一个好的解决方法?我确实需要一些仅在应用程序关闭时才能执行的代码。
我尝试使用OnDestroy()
作为解决方法,但是在关闭应用程序时也不会调用它。当您进入Oculus对话框询问您是否要退出,而不是实际选择退出时,就会调用OnPaused()
。
答案 0 :(得分:0)
如果您正在为Oculus GO开发和发布,那么您将需要使用其Unity SDK,这反过来提供了正确退出应用程序的功能。
我猜您不能使用OnApplicationQuit,因为在Oculus Go要求中,后退按钮只能用于使用户返回Oculus Go主菜单。
首先,您需要通过从Oculus Developer网站下载并导入Unity SDK,确保在项目中拥有OVRmanager。
然后使用下面的脚本退出应用程序,当您按下控制器上的后退按钮时,它将使您返回Oculus Go Main菜单。
if (OVRInput.GetDown(OVRInput.Button.Back)
{
OVRManager.PlatformUIConfirmQuit();
}
答案 1 :(得分:0)
正如您已经说过的那样,从Oculus菜单上退出Go上的应用程序时,实际上从未调用OnApplicationQuit()
。相反,该应用被置于暂停状态,对此您几乎无能为力。除了迷上本机代码或某些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没有在文档中提供任何内容,并且他们没有在论坛中回答有关此主题的问题,因此这是一个不错的解决方法。 / p>
唯一的另一种选择是鼓励用户从您的应用程序内单击某种“退出”按钮,该按钮会调用UnityEngine.Application.Quit()
,这实际上会调用OnApplicationQuit()
方法
干杯。