C# 如何同步在线解锁的宝石、硬币和关卡等游戏数据(unity platform)

C# 如何同步在线解锁的宝石、硬币和关卡等游戏数据(unity platform),c#,firebase,unity3d,google-play-games,C#,Firebase,Unity3d,Google Play Games,我正试图像其他许多游戏一样在线保存游戏数据。 我希望用户通过facebook、google或任何其他来源登录,然后用户的游戏进度应在线存储,当用户重置游戏或错误丢失设备数据时,他应能够访问在线存储的数据,以检索其进度信息,如硬币,宝石和解锁关卡等 我尝试过谷歌游戏服务,在那里我找到了排行榜和成就,但我没有找到一种方法来保存我的用户的游戏统计数据 我目前没有解决方案 我希望在线存储数据,我的游戏用户应该能够在线同步数据。如果你在Unity工作,目标是Android和iOS,你也可以查看Fireba

我正试图像其他许多游戏一样在线保存游戏数据。
我希望用户通过facebook、google或任何其他来源登录,然后用户的游戏进度应在线存储,当用户重置游戏或错误丢失设备数据时,他应能够访问在线存储的数据,以检索其进度信息,如硬币,宝石和解锁关卡等

我尝试过谷歌游戏服务,在那里我找到了排行榜和成就,但我没有找到一种方法来保存我的用户的游戏统计数据

我目前没有解决方案


我希望在线存储数据,我的游戏用户应该能够在线同步数据。

如果你在Unity工作,目标是Android和iOS,你也可以查看Firebase。您可以将用户统计数据存储在中,这与Unity集成得非常好

我没有一个很好的存储消耗品和进度的示例,但是有一个示例可以让您从基础知识开始,并让您很好地了解在不提交的情况下代码的形状(大多数与数据库相关的代码都在中)

我建议采用如下结构:

{
  "rules": {
    "Users": {
      "$uid": {
        ".read": "auth != null && $uid == auth.uid",
        ".write": "auth != null && $uid == auth.uid"
      }
    }
  }
}
用户列表:

  • {user_id0}
    • 硬币
    • 宝石
    • 水平
  • {user_id1}
    • 硬币
    • 宝石
    • 水平
您可以使用rules.json文件来确保安全,该文件的内容如下:

{
  "rules": {
    "Users": {
      "$uid": {
        ".read": "auth != null && $uid == auth.uid",
        ".write": "auth != null && $uid == auth.uid"
      }
    }
  }
}
您必须使用以真正利用规则逻辑,但它应该支持您想要的大多数身份验证提供商(包括您现有的工作以及iOS的Game Center)。您可以将现有的工作与Google Play Games登录结合起来,或者使用一系列不同的身份验证提供商之一


对于我自己的流程,我喜欢将可消费的更新(在您的情况下可能是硬币和宝石)直接绑定到更新侦听器中,以便让RTDB的缓存系统使用侦听器独立运行。更新数据库最好通过呼叫完成,这将帮助您在脱机或用户在设备之间切换时处理紧急情况。

我不确定我是否理解这里的问题,您肯定不允许本地客户端操作这些值?您的服务器后端应处理这些详细信息、操作和存储,您的客户端应只能获取当前值的副本,但所有操作(如购买宝石/硬币、花费硬币等)均应由您的服务器处理。您好。。谢谢你的快速回复。但我实际上想知道一个详细的解决方案。您可以发布一个链接来遵循unity中服务器实现的步骤吗?不幸的是,这将是一个非常广泛的问题。你需要研究服务器和后端开发,数据库(任何类型)在那里存储数据,为这类事情设计API。真的非常有用。。。感谢您提供了这个简单的解决方案