Domanda

Il mio requisito è quello di ottenere i primi 5 punteggi dalla classifica e visualizzarlo nella mia app.

C'è un metodo LoadtopScores ma mostra i punteggi nella propria ui, immagino.

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);
.

Quindi c'è un modo in cui posso ottenere dati individuali come il nome e il punteggio ..?

Nome 1: Nome del capocannoniere 1 Punteggio 1: Punteggio del capocannoniere 1

Nome 2: Nome del punteggio superiore 2 Punteggio 2: Punteggio del punteggio superiore 2

...... e così via

Voglio solo il nome della stringa e punteggio intero in modo che io possa usarlo nel mio gioco.

Si prega di suggerirmi alcune idee

È stato utile?

Soluzione 3

La mia soluzione che ha funzionato è il seguente che è per gli ultimi servizi di gioco.

  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();

                 }

 }
.

È possibile ottenere tutti i dati dagli utenti della classifica qui inclusa l'immagine ad alta risoluzione, vale a dire.immagine del profilo. Spero che tu abbia l'idea qui.

Altri suggerimenti

Sei sulla strada giusta nell'esempio, è solo necessario estrarre le informazioni una volta caricato.È abbastanza confuso a farlo funzionare ma ti indicherò a Questa risposta della mia, che mostra come farloI risultati - facendolo per le classifiche funziona allo stesso modo, tranne che userai le interfacce della classifica invece di quelle utilizzate per i risultati.

Fondamentalmente, accedite arg2 per ottenere i dati, e dovrebbe essere simile a questo:

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);
.

Non ho effettivamente testare questa implementazione, ma dovrebbe funzionare (o almeno mostrarti abbastanza in modo da poter risolvere qualsiasi errore che potrei aver fatto).

Basta ricordare che questo sarà fatto asincrono, quindi il contenuto del metodo non verrà eseguito immediatamente, ma piuttosto una volta che i punteggi sono stati caricati.

Ecco come l'ho raggiunto.

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);


                        }
                    }

                }});
.

Puoi usarlo come vuoi aver creato una stringa e restituirlo all'unità e poi analizzato. Ma questo codice funziona con gli ultimi servizi di Google Play.

Grazie

Questo codice ti ottiene i primi 5 punteggi sulla classifica.

private LeaderboardsClient mLeaderboardsClient; 

    mLeaderboardsClient.loadTopScores("HgkF9bOSF_UPAAILKE", LeaderboardVariant.TIME_SPAN_ALL_TIME, LeaderboardVariant.COLLECTION_PUBLIC,5,true).addOnSuccessListener(new OnSuccessListener<AnnotatedData<LeaderboardsClient.LeaderboardScores>>() {
                        @Override
                        public void onSuccess(AnnotatedData<LeaderboardsClient.LeaderboardScores> leaderboardScoresAnnotatedData) {

                            LeaderboardScoreBuffer scoreBuffer = leaderboardScoresAnnotatedData.get().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());
                            }

                        }
                    });
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top