unity3d 应用程序在后台运行时Unity实时游戏搜索

qrjkbowd  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(129)

我有一个Unity移动的多人游戏,使用Firebase进行配对,当用户按下播放按钮时,它会将他们添加为可用于Machmake

mDatabaseRef.Child("matchMake").Child(auth.CurrentUser.UserId).Child("playerName").SetValueAsync(auth.CurrentUser.DisplayName);

当用户按下取消游戏搜索按钮时删除它们,但我也想在他们关闭应用程序时删除它们(即使他们没有按下取消游戏按钮),使用

private void OnApplicationQuit()
{
    removePlayer();
}

void OnApplicationPause(bool pause)
{
    removePlayer();
}
    public void removePlayer()
{
    mDatabaseRef.Child("matchMake").Child(auth.CurrentUser.UserId).RemoveValueAsync();
}

所以我想要的是让他们在matchmake,如果他们在后台添加应用程序(并考虑通过推送通知通知他们找到游戏),但如果他们从App Switcher关闭应用程序,则删除这些通知(甚至如果系统退出它以释放资源)问题是,虽然我可以从应用程序进入后台时调用的OnApplicationPause中删除“RemovePlayer”,如果应用程序从应用程序切换器关闭,它不会调用OnApplicationQuit,根据文档,这种行为是正确的
警告:如果用户在移动的平台上挂起应用程序,操作系统可能会退出应用程序以释放资源。在这种情况下,Unity可能无法调用此方法,具体取决于操作系统。在移动平台上,最好不要依赖此方法来保存应用程序的状态。
有什么办法能让我如愿吗?
谢谢!!!

f3temu5u

f3temu5u1#

Firebase Realtime Database具有所谓的onDisconnect处理程序,允许您在联机时向服务器发送写入指令,然后服务器在检测到客户端已断开连接时执行该指令。
由于onDisconnect没有针对Unity的文档,因此我建议查看Android文档以了解onDisconnect的工作原理,然后根据onDisconnect in Unity的参考文档实现它。

相关问题