当前位置: 首页 > 知识库问答 >
问题:

使用Firebase实时数据库和Unity制作排行榜

谷梁驰
2023-03-14

我正在使用firebase实时数据库、unity和facebook(个人资料图片和姓名)制作排行榜

但是我在挣扎,我不确定这样做的方式。我想展示多个排行榜-

我知道我可以使用云功能重置每周和每月排行榜。但是如何存储世界和地区分数呢?现在我只有这个-

https://cdn.discordapp.com/attachments/440873502535450627/821361474353889320/ld.JPG

多亏了这一点,我可以很容易地获得地区排行榜getref.getchild用户。getchild法国,然后orderbyvalue。这是好的!

问题是我如何获得世界排行榜?(我有其他国家)我太迷路了。。。我需要为我的排行榜制作另一个结构吗?

共有1个答案

李光华
2023-03-14

你可能会考虑很多因素,包括定价、你对客户的信任程度、,

话虽如此,我想我可能会建议稍微重组一下您的数据。例如:有一个名为“用户”的节点,所有用户都在其中。用户中的每个用户都应该放在一个简单的用户标识节点中(这使得安全规则更容易编写),在这里您可以放置所有时间得分、每月得分和每周得分。我还建议存储您获得该分数的时间(使用ServerValue。时间戳),这样你就不必担心通过你的用户和删除所有旧分数。如果你的每周时间戳不是本周,你知道忽略/覆盖它(显然,时间很难,所以你必须弄清楚“一周”对你游戏的玩家意味着什么

现在,对于每月和每周cadences的地区和世界排行榜,我只需将您想要显示的所有内容复制到该排行榜节点(比如用户名和分数),并添加uid,如果您需要将其归还给用户(比如,如果您想点击该分数并查看其所有时间记录)。因此,如果一个用户居住在法国,他们每周的得分很高,我会先用每周得分和时间戳写下该用户的“users/”节点,然后我会去法国的每周排行榜,并在符合条件的情况下添加新的得分(即:如果你只跟踪前10名,不要添加它),然后进入世界排行榜并将其添加到那里。

如何进行复制取决于你自己。你可以让客户负责安全规则,只是确保他们表现良好——这可能既快又便宜,但如果他们在更新过程中中途离线,可能会变得奇怪。你可以使用Firebase触发器,监听用户更新其节点,并将数据复制到相应的排行榜(这将更加昂贵,因为你支付云功能的时间和速度稍慢,但在用户节点更新后将始终有效)。

最后一点是,比如说,每周排行榜。我会有一个节点,上面写着“这是法国现在的每周排行榜”,让所有客户先阅读,然后再决定在哪里写作。这样,当你决定一周结束时,你可以改变这个节点,让人们开始在其他地方写作。然后,你可以将旧的排行榜保留一段时间(例如:也许你想看看谁在本周和上周之间发生了变化),你可以在确定所有玩家都有自己的分数后,在空闲时间删除它(例如:网速过慢、断开连接、,

 类似资料:
  • 我有一个使用firebase数据库实时排名的迷你游戏。 在我从firebase获得用户分数列表后,我想获得列表之外的当前用户的分数。 获取当前用户的分数很容易,但如何知道列表中的排名是OrderByChild(“分数”)。 这是获取排行榜的代码。

  • 我是一个firebase用户,最近深入研究了rtdb,刚刚发现了一个限制文档,解释了单个数据库实例的写入限制,并引用了下面的引文: 单个数据库上每秒写入操作的限制。虽然不是硬限制,但如果每秒写入次数超过1000次,则写入活动可能会受到速率限制。 例如,在firestore的安全规则中,删除操作属于写操作的范畴,我猜这样的概念也适用于其他firebase服务。所以我想确切地知道< code>dele

  • 我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire

  • 当我试图删除或编辑实时数据库中的节点时,我总是得到这样的信息:我必须选择一个元素较少的键来更改某些内容,否则它是只读的。 但是当我单击低级节点时,没有任何反应。因此,我实际上可以从控制台:( 一周前,我没有看到这个警告,一切都很好!知道如何回到工作版本吗? 我也觉得德语翻译的不太好,因为它告诉我应该激活另一种模式。用英语说,模式被激活。

  • 我注意到,如果我发送一些数据到数据库,同时互联网连接被删除,在我重新连接后,数据不会被重新发送。此功能不适用于统一或我错过了什么?这个文档说这应该行得通,但事实并非如此:https://firebase.google.com/docs/database/unity/save-data#write_data_offline

  • 每当我使用Admin SDK从Node运行Firebase实时数据库代码时,进程都会挂起。例如,我可能有一个节点应用程序: 我使用运行。用户将设置为不活动,这很好。但是节点进程将挂起。我必须按ctrl-c才能返回提示。 我应该使用Firebase在节点应用程序中关闭连接或执行其他操作吗?对于Firebase函数,我必须返回从上述调用生成的promise。那么,Firebase函数是否自动处理关闭我