首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌排名前五名

谷歌排名前五名
EN

Stack Overflow用户
提问于 2014-06-05 10:23:48
回答 4查看 11.2K关注 0票数 4

我的要求是从排行榜上获得前5名,并在我的应用程序中显示出来。

有一个方法loadTopScores,但它显示在它自己的UI中的分数,我猜。

代码语言:javascript
复制
mGamesClint.loadTopScores(new OnLeaderboardScoresLoadedListener() {

            public void onLeaderboardScoresLoaded(int arg0, LeaderboardBuffer arg1,
                    LeaderboardScoreBuffer arg2) {
                // TODO Auto-generated method stub




            }
        }, LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME  , LeaderboardVariant.COLLECTION_PUBLIC, 5, true);

我有没有办法得到个人数据,比如姓名和分数.?

名字1:最高得分者的名字1分1:最高得分手1分

名字2:得分最高的2名:得分最高的2名

......and等

我只想要名字,字符串和分数整数,以便我可以使用它在我的游戏。

请给我一些建议

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-08 11:48:49

我的解决方案工作如下,这是最新的游戏服务。

代码语言:javascript
复制
  Games.Leaderboards.loadTopScores(mGamesClint,LEADERBOARD_ID, LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 5).setResultCallback(new ResultCallback<Leaderboards.LoadScoresResult>() {

        public void onResult(LoadScoresResult arg0) {
            // TODO Auto-generated method stub

            int size = arg0.getScores().getCount();



            for ( int i = 0; i < 3; i++ )  {

                LeaderboardScore lbs = arg0.getScores().get(i);

                String name = lbs.getScoreHolderDisplayName();

                String score = lbs.getDisplayScore();

                Uri urlimage = lbs.getScoreHolderHiResImageUri();

                 }

 }

您可以在这里从主板用户那里获得所有数据,包括高分辨率图像。侧写图片。希望你能在这里有个主意。

票数 2
EN

Stack Overflow用户

发布于 2014-06-05 21:46:02

在您的示例中,您正处于正确的轨道上,您只需要在加载信息之后提取它。让它正常工作是相当令人费解的,但我将向您介绍我的this answer,它展示了如何为取得成就而工作--对于领导板来说,它的工作方式是相同的,只不过您将使用领导板接口而不是那些用于取得成就的界面。

基本上,您将访问arg2来获取数据,它应该如下所示:

代码语言:javascript
复制
mGamesClint.loadTopScores(new OnLeaderboardScoresLoadedListener() {

   public void onLeaderboardScoresLoaded(int arg0, LeaderboardBuffer arg1, LeaderboardScoreBuffer arg2) {

      // iterate through the list of returned scores for the leaderboard
      int size = arg2.getCount();
      for ( int i = 0; i < size; i++ )  {
         LeaderboardScore lbs = arg2.get( i );

         // access the leaderboard data
         int rank = i + 1;         // Rank/Position (#1..#2...#n)
         String name = lbs.getScoreHolderDisplayName();
         String scoreStr = lbs.getDisplayScore();
         long score = lbs.getRawScore();

         // now display or cache these values, or do whatever with them :)
      }

      arg2.close();
      arg1.close();
   }
}, LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 5, true);

实际上,我并没有测试这个实现,但是它应该可以工作(或者至少向您展示足够多的内容,以便您可以修复我可能犯的任何错误)。

请记住,这将是异步执行的,因此方法的内容不会立即执行,而是在加载分数之后执行。

票数 3
EN

Stack Overflow用户

发布于 2015-06-08 12:05:33

我是如何做到这一点的。

代码语言:javascript
复制
PendingResult<Leaderboards.LoadScoresResult> topScores = 
            Games.Leaderboards.loadTopScores(getApiClient(),LEADERBOARD_ID,LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC, 1, true);
            topScores.setResultCallback(new ResultCallback<Leaderboards.LoadScoresResult>() {

                @Override
                public void onResult(LoadScoresResult scoreResults) {

                    if(scoreResults != null) {
                        if (scoreResults.getStatus().getStatusCode() == GamesStatusCodes.STATUS_OK) {
                            scoreStringBuilder = new StringBuilder();
                            LeaderboardScoreBuffer scoreBuffer = scoreResults.getScores();
                            Iterator<LeaderboardScore> it = scoreBuffer.iterator();
                            while(it.hasNext()){
                                 LeaderboardScore temp = it.next();
                                 Log.d("PlayGames", "player"+temp.getScoreHolderDisplayName()+" id:"+temp.getRawScore() + " Rank: "+temp.getRank());
                                 scoreStringBuilder.append("|"+temp.getScoreHolderDisplayName()+"*"+temp.getRawScore());
                            }
                            UnityPlayer.UnitySendMessage(handlerName, "onGetScoreSucceededEventListener", "");
                             Log.d("PlayGames", "Call Sent for getHighScorewithPlayerNameSuccess ::: "+handlerName);


                        }
                    }

                }});

您可以按需要使用它--我创建了一个字符串,并将其返回给Unity,然后解析它。但是这段代码正在与最新的Google服务一起使用。

谢谢

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24057643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档