API-интерфейс Unity Google Play Services не синхронизирован с функцией пользовательского интерфейса Show Leaderboard?

Я использую Google Play Games Services Unity Plugin для создания игры для Android, как описано в: https://github.com/playgameservices/play-games-plugin-for-unity

Проблема:

Когда я загружаю баллы с использованием API (Social API или PlayGamesPlatform.Instance объекта плагина Google Play), я получаю устаревшие оценки. Но, когда я использую функцию ShowLeaderBoardUI(), в графическом интерфейсе правильные оценки.

Таким образом, в публикациях нет проблем.

Я использую следующий фрагмент, чтобы загружать пользовательские баллы из Google Play Game Services ScoreBoard:

void LoadUsersAndDisplay(int leaderBoardID,ILeaderboard lb,LeaderBoardEntry[] resultingEntries)
    {
        // get the user ids
        List<string> userIds = new List<string>();

        foreach(IScore score in lb.scores) {
            userIds.Add(score.userID);
        }
        // load the profiles and display (or in this case, log)
        PlayGamesPlatform.Instance.LoadUsers(userIds.ToArray(), (users) =>
            {
                string status = "Leaderboard loading: " + lb.title + " count = " +
                    lb.scores.Length;
                int currentUserIndex = 0;
                foreach(IScore score in lb.scores) {
                    IUserProfile user = users[currentUserIndex];


                    status += "\n" + score.formattedValue + " by " +
                        (string)(
                            (user != null) ? user.userName : "**unk_" + score.userID + "**");

                    resultingEntries[currentUserIndex] = new LeaderBoardEntry(score.rank,user.userName,score.value);
                    currentUserIndex++; 
                }

                // Get the local user score
                LeaderBoardEntry localUserEntry = new LeaderBoardEntry(lb.localUserScore.rank, Social.localUser.userName,lb.localUserScore.value);

                // Notify the observers about the receiving of the scores
                foreach (LeaderBoardObserver currentObserver in observers) {
                    Debug.Log ("Notifying the leaderboard observer");
                    currentObserver.OnScoresReceived (leaderBoardID,resultingEntries,localUserEntry);
                }

                Debug.Log(status);
            });
    }


public void getScores(int lbID){

        ILeaderboard lb = PlayGamesPlatform.Instance.CreateLeaderboard();
        lb.id = leaderboards [lbID].lbOfficialID;
        lb.timeScope = TimeScope.AllTime;
        lb.userScope = UserScope.Global;
        LeaderBoardEntry[] resultingEntries = null;

        lb.LoadScores(ok =>
            {
                if (ok) {
                    resultingEntries = new LeaderBoardEntry[lb.scores.Length];
                    LoadUsersAndDisplay(lbID,lb,resultingEntries);
                }
                else {
                    Debug.Log("Error retrieving leaderboardi");
                }
            });


        Debug.Log ("Have " + observers.Count + " lbObservers");
    }

У меня есть следующий вывод, когда я печатаю полученную таблицу лидеров:

>>Leaderboard loading: Quick Reaction Mode World Ranking count = 1
>>I/Unity   (16088): 45 by firatercis

Но когда я показываю все оценки времени для глобальных пользователей, у меня есть следующий снимок экрана:

введите описание изображения здесь

Во-первых, табло было пустым, я набрал 45 очков. Я видел 45 точек в обеих сторонах, и проблем не было. Затем я набрал 50. Но результат, который я достиг API, никогда не обновляется.

Я удалил и переустановил игру, нет. Я очистил кэш приложения, и не должно быть никакой копии номера 45 в любом месте, но я постоянно получаю 45 баллов с помощью API. Пожалуйста, помогите, где я могу быть неправ?

Ответ 1

Возможно, ваша конфигурация не завершена, как показано в документации:

Добавьте достижения и списки лидеров в свою игру в консоли разработчика Google Play. Для каждого достижения и таблицы лидеров, которые вы настраиваете, обязательно обратите внимание на соответствующий идентификатор достижения или идентификатор группы лидеров, поскольку они будут необходимы при выполнении вызовов API. Идентификаторы достижений и лидеров - это буквенно-цифровые строки (например, "Cgkx9eiuwi8_AQ" ).

Повторите проверку кода.

Ответ 3

Убедитесь, что настройки панели лидеров в консоли разработчика Google Play соответствуют вашим потребностям. В частности, убедитесь, что Заказ действительно настроен на "Больше больше" и что у вас нет никаких наборов Лимиты. Возможно, переключение "Enable tamper protection" также является хорошей идеей...

Я бы написал это как комментарий и запросил некоторые пояснения, но у меня нет точек репутации.: (