【问题标题】:Firebase unity mobile game set firestore data to offline while player offlineFirebase Unity手游将Firestore数据设置为离线,而玩家离线
【发布时间】:2021-10-19 06:45:48
【问题描述】:

作为标题,我正在使用unity来构建手机游戏并将玩家标记为离线,以便其他玩家知道(在玩家姓名旁边显示离线图标)。我试过当应用程序没有聚焦时,将firestore doc的字段更新为离线,但在某些情况下,它不起作用(例如应用程序崩溃、电池电量不足或其他)。 有什么方法可以确保当玩家离开游戏时,正确标记该玩家离线。

非常感谢

【问题讨论】:

  • 您是在问是否可以通过 Firestore 检测玩家的连接状态?如果这是问题,答案是否定的,Firestore 不提供任何类型的存在系统。但是,实时数据库确实看到了Managing Presence
  • 不是特定的 Firestore。 Firebase 上的其他服务是否满足我的要求?我暂时不使用实时数据库。
  • 我设置了 Firestore 字段让其他玩家知道该玩家是否在线,问题是我无法正确将字段更改为离线。玩家退出游戏时,我无法将字段更改为离线。
  • 实时数据库可以很好地解决这个问题,就像用户断开与服务器的连接一样,服务器将一段数据写入服务器上的节点(您定义的),然后可以用于例如,通知其他玩家玩家离线。所有玩家都会观察这个节点的变化,因此很容易检测到玩家何时离线或在线。

标签: firebase unity3d google-cloud-firestore


【解决方案1】:

您可以使用当前时间戳更新数据库中的特定路径。因此,在其他玩家方面,您必须进行一些计算,以确定最后一个时间戳是否已经超过当前时间戳的阈值(1 分钟)。

【讨论】:

  • 如果玩家断开连接(根据问题),那么他们的客户端将无法在服务器上添加/更新任何数据,因此此答案将不起作用
  • 不,它会起作用,因为您要将当前时间与上次服务器时间进行比较。如果大于非活动阈值,则可以确定玩家处于非活动状态。此外,如果我没记错的话,这就是其他消息应用程序确定活动/离线状态的方式。
  • @SrejonKhan 你的意思是当玩家在线时每分钟向firestore发送更新时间戳,以便其他玩家知道玩家的最后更新时间戳?如果超过 1 分钟,就表示离线?
  • 是的,你是对的。
  • 非常感谢,我会试试的。到目前为止,这似乎是唯一有效的方法。
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 2021-10-27
  • 2018-05-30
  • 2017-04-05
相关资源
最近更新 更多