play-games-plugin-for-unity - 显示特定的排行榜

Oli*_*ler 2 iphone android leaderboard unity-game-engine google-play-services

我正在尝试将google play Leaderboard与play-games-plugin-for-unity插件集成到我的游戏中.它工作正常,承诺排行榜一个人,只有一件事不起作用.当我打电话给排行榜时

    //LEADERBOARD
    if (GUI.Button(leaderboardButton, "Leaderboard"))
    {
        ((PlayGamesPlatform)Social.Active).ShowLeaderboardUI(Constants.LEADERBOARDID);

        // Social.ShowLeaderboardUI();
    }
Run Code Online (Sandbox Code Playgroud)

它打开了我看到所有排行榜的窗口.但是我给了一个特定的身份证.这将是我期望从Social.ShowLeaderboardUI()行开始的行为; 被注释掉了.具有给定Id(隐藏在Constants.LEADERBOARDID之后)的重载应该根据文档启动特定的排行榜UI.有人知道这是一个问题(没有看到任何关于GitHub的报道)以及如何解决它?这不是一个大问题,但一次点击优于两次.

我尝试了一些有趣的事 我将Id更改为某个错误的值.仍然是相同的行为(打开所有排行榜的窗口).当然,提交分数不再有效.

Oli*_*ler 5

好的,我在插件的源代码中发现了错误,修复了它并解决了问题.所以我在这里提出修复,如果有人需要它.它位于LeaderboardManager类中.

这就是ShowUI的调用方式:

internal void ShowUI(string leaderboardId, Action callback) {
Misc.CheckNotNull(callback);

    C.LeaderboardManager_ShowAllUI(mServices.AsHandle(), Callbacks.InternalShowUICallback,
        Callbacks.ToIntPtr(callback));
}
Run Code Online (Sandbox Code Playgroud)

这应该是正确的版本

internal void ShowUI(string leaderboardId, Action callback) {
Misc.CheckNotNull(callback);

    C.LeaderboardManager_ShowUI(mServices.AsHandle(),leaderboardId, Callbacks.InternalShowUICallback,
        Callbacks.ToIntPtr(callback));
}
}
Run Code Online (Sandbox Code Playgroud)

看到不同?C.LeaderboardManager_Show调用所有 UI而不是C.LeaderboardManager_ShowUI.