首页 > 解决方案 > 如何立即从 Firebase Unity 获取孩子?

问题描述

我有以下结构:

我使用此代码获取分数的孩子 0、100、900、1000

public void GetRanking()
{
    FirebaseDatabase.DefaultInstance.GetReference("Ranking").ValueChanged += DatabaseManager_ValueChanged1;
}
private void DatabaseManager_ValueChanged1(object sender, ValueChangedEventArgs e)
{
    if (e != null)
    {
        print(e.Snapshot.Child("Scores").GetRawJsonValue());

    }
    else
    {
        GetRanking();
    }

}

我希望只得到那个数字(0、100、900、1000),但结果是

{"0":{"nName":"abc","uID":""},"100":{"nName":"abc","uID":""},"900":{"nName":"abc","uID":""}, "1000":{"nName":"abc","uID":""}}

你能给我一些建议吗?

标签: c#firebaseunity3dfirebase-realtime-database

解决方案


这是有效的,但有一个问题。我将分数更改为 50、100、500。但是,结果是 100、50、500。由于它们不是数字,所以排序不起作用,所以我将它们放入列表中然后排序。

public void GetRanking()                  
    {
        FirebaseDatabase.DefaultInstance.GetReference("Ranking").Child("Scores").OrderByKey().ValueChanged += DatabaseManager_ValueChanged1;

    }

    private void DatabaseManager_ValueChanged1(object sender, ValueChangedEventArgs e)
    {
        if (e != null)
        {
            
            foreach (var score in e.Snapshot.Children)
            {
                
                print("score: " + score.Key);
                                                                         
            }
            

        }

        else
        {
            GetRanking();                                                                                   
        }

    }

推荐阅读