Este documento orienta você na configuração do projeto do Unity para usar o plug-in do Google Play Games para Unity. Você vai aprender a instalar o plug-in e configurar o projeto do Unity. O documento também aborda como verificar o serviço de autenticação.
Antes de começar
Confira os requisitos de software. Configure o Play Console e instale o Unity Editor.
Configure o Play Console para o jogo.
Instale o Unity Editor e crie o jogo no Unity.
Instalação do plug-in
Para fazer o download e instalar o plug-in do Google Play Games para Unity, siga estas etapas no Unity Editor:
Faça o download do repositório do GitHub.
No diretório
current-build, localize o arquivounitypackage. Esse arquivo representa o plug-in. Por exemplo, ele deve ser semelhante a este:current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
Configurar o projeto do Unity
Para configurar um projeto do Unity nas configurações do player, siga estas etapas:
Abra o projeto de jogo.
No Unity Editor, clique em Assets > Import Package > Custom Package para importar o arquivo
unitypackagepara os recursos do projeto.Confira se a plataforma de build atual está definida como Android.
No menu principal, clique em File > Build Settings.
Selecione Android e clique em Switch Platform.
Um novo item de menu vai aparecer em Window > Google Play Games. Se isso não acontecer, clique em Assets > Refresh para atualizar os recursos e tente definir a plataforma de build novamente.
No Unity Editor, clique em File > Build Settings > Player Settings > Other Settings.
Na caixa nível desejado da API, selecione uma versão.
Na caixa Scripting backend, insira
IL2CPP.Na caixa Target architectures, selecione um valor.
Anote o nome do pacote package_name.Você pode usar essas informações mais tarde.
Criar um novo keystore
Para validar suas credenciais, você precisa de uma chave. Siga estas etapas:
- No Unity Editor, clique em File > Build settings > Player settings.
- Na seção Publishing settings, clique em Keystore manager.
- Na janela Keystore manager, clique em Keystore > Create new > Anywhere.
- Selecione uma pasta e forneça um nome para o keystore.
- Na caixa Password, insira uma senha e confirme.
- Clique em Add key.
Anote o nome da pasta. Você pode usar esse nome para criar uma credencial em Google Cloud.
Copiar os recursos do Android do Play Console
Cada conquista, placar e evento criado no Play Console inclui um recurso do Android que você usa ao configurar seu projeto do Unity.
Para acessar os recursos do Android do seu jogo, siga estas etapas:
No Google Play Console, abra o jogo.
Na página serviços do Google Play Games - Configuration (Grow users > serviços do Google Play Games > Setup and management > Configuration), clique em Get resources.
Na janela Resources, clique na guia Android(XML).
Selecione e copie o conteúdo dos recursos do Android (
AndroidManifest.xml).
Adicionar os recursos do Android ao seu projeto do Unity
Adicione os seguintes recursos do Android ao seu projeto do Unity:
No Unity Editor, clique em Window > Google Play Games > Setup > Configuração do Android.
- No campo Directory to save constants, insira o nome da pasta do arquivo de constantes.
No campo Constants class name, insira o nome da classe C# a ser criada, incluindo o namespace.
Por exemplo, se a classe C# for
id.cse estiver presente em Assets > myproject > scripts > id.cs. O nome da classe de constantes pode sermyproject.scripts.id.No campo Resources definition, cole os dados de recursos do Android (arquivo
AndroidManifest.xml) que você copiou do Google Play Console.Opcional: no campo Client ID, insira o ID do cliente do app da Web vinculado.
Para acessar o ID do cliente do seu jogo no Google Cloud, consulte Criar IDs do cliente.
Isso só será necessário se você tiver um back-end baseado na Web para o jogo e precisar que o código de autenticação do servidor seja trocado por um token de acesso pelo servidor de back-end ou se você precisar de um token de ID para o jogador fazer outras chamadas de API fora do jogo.
Clique em Setup. O jogo vai ser configurado com o ID do cliente e uma classe C# vai ser gerada com constantes para cada recurso do Android.
No Unity Editor, clique em Window > Google Play Games > Setup > Nearby Connections Setup.
No campo Nearby connection service ID, insira o package_name.
Use o mesmo package_name que você usou em configuração do projeto do Unity.
Clique em Setup.
Escolher uma plataforma social
O plug-in dos serviços do Google Play Games implementa a interface social, do Unity para oferecer compatibilidade com jogos que já usam essa interface na integração com outras plataformas. No entanto, alguns recursos são exclusivos do Play Games e oferecidos como extensões da interface social padrão fornecida pelo Unity.
As chamadas de API padrão podem ser acessadas no objeto Social.Active , que é uma referência a uma interface ISocialPlatform. As extensões dos serviços do Google Play Games que não são padrão podem ser acessadas ao transmitir o objeto Social.Active para a classe PlayGamesPlatform, em que os outros métodos extra estão disponíveis.
Usar o plug-in sem substituir a plataforma social padrão
Quando você chama
PlayGamesPlatform.Activate,
os serviços do Google Play Games se tornam a implementação de plataforma social padrão. Isso significa que o plug-in dos serviços do Google Play Games realiza chamadas estáticas para métodos em Social e Social.Active, que é o comportamento esperado para a maioria dos jogos que usam o plug-in.
No entanto, se por algum motivo você quiser manter a implementação padrão acessível (por exemplo, para enviar conquistas e placares a uma plataforma social diferente), use o plug-in dos serviços do Google Play Games sem substituir a configuração padrão. Para fazer isto:
- Chame o método
PlayGamesPlatform.Activate. - Se
Xyzfor o nome de um método chamado na classeSocial, não chameSocial.Xyz. Em vez disso, chamePlayGamesPlatform.Instance.Xyz. - Use a propriedade
PlayGamesPlatform.Instanceem vez deSocial.Activeao interagir com os serviços do Google Play Games.
Dessa forma, é possível até enviar pontuações e conquistas simultaneamente a duas ou mais plataformas sociais:
// Submit achievement to original default social platform
Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);
// Submit achievement to Google Play
PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);
Verificar o serviço de autenticação
Uma conexão com os serviços do Google Play Games é automaticamente estabelecida usando a autenticação da plataforma quando o jogo é aberto. Se a conexão for bem-sucedida, seu jogo vai mostrar uma solicitação de login e vai estar pronto para usar o plug-in dos serviços do Google Play Games para Unity.
Se um usuário nunca tiver usado os serviços do Google Play Games no dispositivo, ele será direcionado automaticamente à tela de configuração única para criar uma conta do Play Games.
No método Start do script, detecte o resultado da tentativa de autenticação automática, busque o status de autenticação e desative os recursos dos serviços relacionados a jogos do Google Play, caso o usuário não esteja autenticado.
Se a versão do plug-in do Unity for anterior à v11, não será possível usar o recurso de autenticação.
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
}
internal void ProcessAuthentication(SignInStatus status) {
if (status == SignInStatus.Success) {
// Continue with Play Games Services
} else {
// Disable your integration with Play Games Services or show a login button
// to ask users to authenticate. Clicking it should call
// PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
}
}
O código de resultado é uma enumeração que pode ser usada para identificar o motivo da falha de autenticação.
Como alternativa, se você preferir usar a plataforma social do Unity, utilize o código abaixo:
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Activate();
Social.localUser.Authenticate(ProcessAuthentication);
}
Não é possível fazer chamadas da API dos serviços do Google Play Games até receber um valor de retorno bem-sucedido de Authenticate. Como resultado, recomendamos que os jogos mostrem uma tela de espera até que o callback seja chamado para garantir que os usuários não possam começar a jogar até que a autenticação seja concluída.
Impedir a criação automática de perfis
É possível desativar os prompts de criação automática de perfis no arquivo de manifesto. Isso permite que usuários sem um perfil dos serviços do Google Play Games continuem carregando o jogo sem receber um prompt para criar um perfil desses serviços. Para mais informações, consulte Opções de criação de perfil.
Para usar esse recurso, confira se as seguintes condições são atendidas:
- O dispositivo não tem um perfil dos serviços do Google Play Games em nenhuma das Contas do Google conectadas.
- Seu jogo está integrado ao plug-in do Unity dos serviços relacionados a jogos do Google Play
2.1.0ou mais recente.
No arquivo
AndroidManifest.xml, adicione acom.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONtag no<meta-data>elemento e atributos ao<application>elemento:<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>
Definir essa flag como "true" informa aos serviços do Google Play Games que seu jogo vai processar a criação de perfil. Consequentemente, os serviços do Google Play Games não vão mostrar automaticamente a interface do usuário de criação de perfil para usuários no dispositivo que não têm um perfil desses serviços.
Para processar casos em que um usuário não está autenticado devido a um perfil dos serviços do Google Play Games ausente, use PlayGamesPlatform.Instance.IsAuthenticated(). Esse método retorna
falseporque a criação de perfil falha. Para resolver isso, inicie o processo de criação de perfil chamando PlayGamesPlatform.Instance.ManuallyAuthenticate().if (!PlayGamesPlatform.Instance.IsAuthenticated()) { // The user is unauthenticated, likely due to a missing Play Games profile. // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger // the profile creation UI. PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => { // ... }); }Depois de adicionar a tag de supressão, use a janela
logcatpara verificar a adição. A saídalogcatcontém uma mensagem semelhante a esta: "Game opted out of automatic profile creation prompt (using manifest)".
Usar a Assinatura de apps do Google Play
O Google gerencia e protege a chave de assinatura do app usando a Assinatura de apps do Google Play. Você pode usar a Assinatura de apps do Google Play para assinar a distribuição otimizada de arquivos do Android App Bundle. A Assinatura de apps do Google Play armazena sua chave de assinatura do app na infraestrutura protegida do Google. Para usar a Assinatura de apps do Google Play, primeiro é necessário criar e fazer o download de um arquivo AAB no Unity Editor. Em seguida, você pode fazer upload do arquivo AAB para o Play Console e criar uma versão de teste interno.
Criar um arquivo AAB
Para criar um arquivo AAB no Unity Editor, siga estas etapas:
- No Unity Editor, clique em File > Build settings.
Selecione Build App Bundle ( Google Play ).
Para mais informações, consulte a referência das configurações de build do Android .
Clique em Build.
Faça o download do arquivo AAB no Unity Editor.
Criar versão de teste interno
Para criar uma versão de teste interno e adicionar testadores no Play Console, siga estas etapas:
- No Google Play Console, selecione um jogo.
- Acesse a página Test and release (Testing > Internal testing).
- Clique em Upload e selecione o arquivo AAB.
- No campo Release details, insira um nome.
- Clique em Next e revise os detalhes da versão.
- Clique em Save and publish.
Na guia Testers, clique em Create email list para adicionar até 100 testadores.
Para mais informações, consulte Teste interno: gerenciar até cem testadores.
No Feedback URL or email address, insira um URL de feedback ou um endereço de e-mail para fornecer feedback.
Clique em Save.
Verificar as credenciais de assinatura de apps
- No Google Play Console, selecione um jogo.
- Acesse a página Test and release (Setup > Assinatura de apps).
- Verifique as credenciais de assinatura de apps.
Criar e executar o projeto
Agora você pode criar e executar o projeto de jogo neste ponto. Quando o jogo começar, você verá a tentativa de autenticação automática.
Você precisa de um dispositivo Android físico com a depuração USB ativada ou um emulador que possa executar o projeto desenvolvido.
Extrair códigos de autenticação do servidor
Para acessar as APIs do Google em um servidor da Web de back-end em nome do jogador atual, você precisa receber um código de autenticação do aplicativo cliente e fazer a transmissão ao aplicativo do servidor da Web. Depois disso, o código pode ser trocado por um token de acesso para fazer chamadas para as várias APIs. Para mais informações sobre o fluxo de trabalho, consulte Fazer login com o Google na Web.
Para receber o código de acesso do lado do servidor:
- Adicione o ID do cliente da Web do seu jogo no Play Console.
- No Google Play Console, selecione seu jogo.
- Na página Configuration (Grow users > serviços do Google Play Games > Setup and Management > Configuration), clique em Add credential.
- Na página Add credential, selecione Game server.
- Gere um ID do cliente OAuth 2.0.
- Anote o valor do ID do cliente. Você precisará fornecer esse valor mais tarde.
Adicione o ID do cliente da Web ao Unity Hub.
- No Unity Hub, configure o Google Play Games para Unity e faça a autenticação.
- No Unity Hub, acesse Window > Google Play Games > Setup > Configuração do Android.
- Insira o valor do ID do cliente.
Recupere o código de autenticação do servidor para outros escopos.
C#
using GooglePlayGames.BasicApi; // Define selectedScope having additional identity scopes. private List
selectedScopes = new List (); // Add scopes you want to request. selectedScopes.Add(AuthScope.OPEN_ID); selectedScopes.Add(AuthScope.PROFILE); selectedScopes.Add(AuthScope.EMAIL); // Call RequestServerSideAccess with additional scopes and retrieve // authcode and grantedscopes list. PlayGamesPlatform.Instance.RequestServerSideAccess( /* forceRefreshToken= */ false,selectedScopes (AuthResponse authResponse) => { string authCode = authResponse.GetAuthCode(); List grantedScopes = authResponse.GetGrantedScopes(); // send authCode to server... });
Configurar e adicionar recursos
Ative os recursos dos serviços relacionados a jogos do Google Play.
Adicione recursos ao seu jogo usando as APIs dos serviços relacionados a jogos do Google Play:
API Recall para Unity (compatível apenas com a versão v11 e mais recentes do plug-in do Unity)