Este tópico descreve como usar os placares dos serviços relacionados a jogos do Google Play em jogos do Unity.
Antes de começar
Configure seu projeto do Unity e o plug-in do Google Play Games para Unity. Para saber mais, consulte o Guia para iniciantes.
Criar eventos
Você cria placares no Google Play Console. Para saber mais, consulte o guia de placares dos serviços relacionados a jogos do Google Play. Depois de criar um placar, adicione o recurso Android ao plug-in, conforme descrito no guia para iniciantes.
Postar uma pontuação em um placar
Para postar uma pontuação em um placar, chame Social.ReportScore.
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Post score 12345 to leaderboard ID "Cfji293fjsie_QA")
Social.ReportScore(12345, "Cfji293fjsie_QA", (bool success) => {
// Handle success or failure
});
Para postar uma pontuação e incluir uma tag de metadados, use diretamente a instância
PlayGamesPlatform
:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Post score 12345 to leaderboard ID "Cfji293fjsie_QA" and tag "FirstDaily")
PlayGamesPlatform.Instance.ReportScore(12345, "Cfji293fjsie_QA", "FirstDaily", (bool success) => {
// Handle success or failure
});
A plataforma e o servidor descartam automaticamente as pontuações mais baixas do jogador. Assim, você pode enviar pontuações livremente sem verificações para testar se ela é maior que a do jogador.
Mostrar a IU dos placares
Para mostrar a IU integrada de todos os placares, chame Social.ShowLeaderboardUI.
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
Social.ShowLeaderboardUI();
Se quiser mostrar um placar específico em vez de todos eles,
transmita um ID de placar para o método. Como essa é uma extensão do Play Games.
o objeto Social.Active precisa ser transmitido para um objeto PlayGamesPlatform
primeiro:
using GooglePlayGames;
using UnityEngine.SocialPlatforms;
...
// Show leaderboard UI
PlayGamesPlatform.Instance.ShowLeaderboardUI("Cfji293fjsie_QA");
Acessar dados do placar
Há dois métodos para recuperar os dados da pontuação do placar.
Usar Social.ILeaderboard
Esse método usa a interface ILeaderboard para definir o escopo e os filtros para acessar os dados. Essa abordagem permite configurar: 1. O ID do placar. 2. A coleção (social ou pública). 3. O período (diário, semanal, geral). 4. A posição de classificação para iniciar a recuperação das pontuações. 5. O número de pontuações (o padrão é 25). 6. Filtro por ID do usuário.
Se o parâmetro "from" não for positivo, os resultados retornados serão centrados no jogador; ou seja, serão retornadas as pontuações do jogador atual.
ILeaderboard lb = PlayGamesPlatform.Instance.CreateLeaderboard();
lb.id = "MY_LEADERBOARD_ID";
lb.LoadScores(ok =>
{
if (ok) {
LoadUsersAndDisplay(lb);
}
else {
Debug.Log("Error retrieving leaderboardi");
}
});
Usar PlayGamesPlatform.LoadScores()
Esse método usa PlayGamesPlatform
diretamente, o que proporciona mais
flexibilidade e informações extras ao acessar os dados do placar.
PlayGamesPlatform.Instance.LoadScores(
GPGSIds.leaderboard_leaders_in_smoketesting,
LeaderboardStart.PlayerCentered,
100,
LeaderboardCollection.Public,
LeaderboardTimeSpan.AllTime,
(data) =>
{
mStatus = "Leaderboard data valid: " + data.Valid;
mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length;
});
Os parâmetros de LoadScores() são:
- ID do placar
- posição inicial (pontuações mais altas ou centradas no jogador)
- contagem por linha
- coleção de placar (social ou pública)
- período (diário, semanal, geral)
- callback que aceita um objeto LeaderboardScoreData.
A classe LeaderboardScoreData
é usada para retornar informações ao
autor da chamada ao carregar pontuações. Os membros são:
1. ID: o ID do placar
2. Valid: verdadeiro se os dados retornados forem válidos (a chamada foi bem-sucedida)
3. Status: o ResponseStatus da chamada
4. ApproximateCount: o número aproximado de pontuações no placar
5. Title: o título do cabeçalho
6. PlayerScore: a pontuação do jogador atual.
7. Scores: a lista de pontuações
8. PrevPageToken: token que pode ser usado para chamar LoadMoreScores()
e acessar a página anterior de pontuações.
9. NextPageToken: um token que pode ser usado para chamar LoadMoreScores()
para
acessar a próxima página de pontuações.
void GetNextPage(LeaderboardScoreData data)
{
PlayGamesPlatform.Instance.LoadMoreScores(data.NextPageToken, 10,
(results) =>
{
mStatus = "Leaderboard data valid: " + data.Valid;
mStatus += "\n approx:" +data.ApproximateCount + " have " + data.Scores.Length;
});
}
Essa chamada pode falhar ao tentar carregar amigos com
ResponseCode.ResolutionRequired
se o usuário não tiver compartilhado a lista de amigos
com o jogo. Nesse caso, use AskForLoadFriendsResolution
para solicitar
acesso.
Ver nomes de jogadores
Cada pontuação tem o ID de usuário do jogador que fez a pontuação. Você pode usar
Social.LoadUsers()
para carregar o perfil do jogador. Lembre-se de que o conteúdo
do perfil do jogador está sujeito às configurações de privacidade dele.
internal void LoadUsersAndDisplay(ILeaderboard lb)
{
// 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)
Social.LoadUsers(userIds.ToArray(), (users) =>
{
string status = "Leaderboard loading: " + lb.title + " count = " +
lb.scores.Length;
foreach(IScore score in lb.scores) {
IUserProfile user = FindUser(users, score.userID);
status += "\n" + score.formattedValue + " by " +
(string)(
(user != null) ? user.userName : "**unk_" + score.userID + "**");
}
Debug.log(status);
});
}