GPGS LoadScores() Unity3D

213
02 июля 2017, 12:23

Использую данный плагин для Unity3d.

Возникают трудности при работе с функцией LoadScores().

Есть две сцены на которых используются аналогичные методы вывода топа игроков. В первом случае все работает корректно, во втором содержится InternalError в свойстве Status возвращаемого объекта.

Пример рабочего (и вместе с тем нерабочего) кода:

PlayGamesPlatform.Instance.LoadScores(
    _currentTopScoreType,
    LeaderboardStart.TopScores,
    10,
    LeaderboardCollection.Public,
    LeaderboardTimeSpan.AllTime,
    (data) =>
    {
        var userIDs = data.Scores.Select(score => score.userID).ToArray();
        Social.LoadUsers(userIDs, (users) =>
        {
          // Здесь отображаем очки
        });
    }
);

В нерабочем случае ответ с ошибкой приходит уже в data.Status. Единственной переменной, меняющейся в коде является _currentTopScoreType. Уже проверил, что в обоих случаях данный идентификатор присваивается корректно.

UPD

Инициализация GPGS производится в отдельном менеджере в загрузочной сцене (там же и аутентифицируется пользователь). Этот менеджер остается в иерархии объектов на протяжении всей работы приложения.

Вспомнив про DRY я перенес одинаковый код с разных сцен в метод данного менеджера:

public void LoadScores(string topScoreType, Action<LeaderboardScoreData, IUserProfile[]> callBackFunc)
{
    PlayGamesPlatform.Instance.LoadScores(
        topScoreType,
        LeaderboardStart.TopScores,
        10,
        LeaderboardCollection.Public,
        LeaderboardTimeSpan.AllTime,
        (data) =>
        {
            var userIDs = data.Scores.Select(score => score.userID).ToArray();
            Social.LoadUsers(userIDs, (users) =>
            {
                callBackFunc(data, users);
            });
        }
    );
}

Сейчас с разных сцен (обозначим их СЦЕНА1 и СЦЕНА2) вызывается данная функция. Тестирование выявило еще более интересную особенность:

  • СЦЕНА1: загрузка топа игроков работает стабильно и независимо от производимых ранее действий.
  • СЦЕНА2: InternalError возвращается при первой попытке загрузки топа, после чего работает стабильно при последующих вызовах.

На СЦЕНА2 перед загрузкой топа у меня производится сохранение очков текущего пользователя. Думал, что связано с этим, но экспериментально не подтвердилось.

На горизонте уже маячит костыльное решение: грузить результаты на СЦЕНА2 после первой неудачной попытки, но очень хотелось бы разобраться в причине происходящего.

READ ALSO
Поиск файлов в директориях

Поиск файлов в директориях

Необходимо найти все файлы на дискеЕсть такой код:

282
HtmlAgilityPack как убрать пробелы

HtmlAgilityPack как убрать пробелы

Текст парсится в хаотичном порядке, одно слово на первой строке, второе на 2 и тд

274
SWIG - c# - обертка для enum

SWIG - c# - обертка для enum

Не могу сделать C# обертку для enum C++ c помощью SWIGЗначение членов c++ enum, которые я хочу обернуть превосходят максимальное значение для Int32

217
Aes дешифрация байтов c#

Aes дешифрация байтов c#

Пытаюсь расшифровать зашифрованные байты алгоритмом AES, c#

385