Google Play Games plugin for Unity

kesada7

Hola gente, necesito vuestra ayuda con un problema que ya me está desesperando desde hace 3 días. A ver si alguno que tenga experiencia con Unity y haya publicado algún juego para android pueda ayudarme.

He hecho mi primer mini juego para Android, y quería implementar la API de Google para compartir puntuaciones y desbloquear logros. Bien pues me pasa algo bastante raro y hace que no sepa ya como buscar el error para solucionarlo, ya que en editor de unity los servicios no funcionan por lo que es complicado seguir un debugging.

Bueno os explico cual es el problema:

  • Cuando exporto la API y la instalo directamente en BlueStacks o mi móvil funciona todo correctamente y conecta con los servicios de Rankings y Logros.
  • Pero cuando subo la API a la Play Store y me la descargo de esta, me deja de funcionar, hace el intento de conectarse pero no funciona. (Al menos en los dispositivos de dos amigos que he probado).
  • En mi móvil ya es lo peor, porque si lo instalo directamente funciona, lo desinstalo y lo instalo desde la Play Store y también funciona a veces y otras no.

En serio esto me está trayendo de cabeza, son esos típicos fallos que te de dan ganas de tirar el móvil por la ventana, y lo peor que seguro es alguna tontería que estoy haciendo mal y no lo veo. Si alguien ha tenido alguna vez un problema parecido o tiene experiencia con el plugin y cree saber que puede ser os escucho.

Dejo en spoiler el link del juego por si alguien está más interesado y me hace el favor de descargarlo y decirme si en su teléfono funciona.

Gracias por la ayuda.

kesada7

Dejo el código que uso para manejar el plugin a ver si veis algo raro:

Un script llamado "GooglePlayConection" para activar los servicios:

using GooglePlayGames;
using GooglePlayGames.BasicApi;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SocialPlatforms;

public class GooglePlayConection : MonoBehaviour {
	void Start () {
        PlayGamesPlatform.Activate();
        if (!PlayGamesPlatform.Instance.localUser.authenticated)
        {            
PlayGamesPlatform.Instance.Authenticate((bool success) => { if (success) { /// Signed in! Hooray! } else { /// Not signed in. We'll want to show a sign in button } }, true); /// That "true" does the loggin in silence! } else { //Debug.Log("We're already signed in"); } } }

Otro para cuando pulso un botón de logros que llama a la funcion ShowMedals:

public void ShowMedals()
    {
        if (Social.localUser.authenticated)
        {
            Social.Active.ShowAchievementsUI();
        }
        else
        {
            Social.localUser.Authenticate((bool success) => {});
        }
    }

Y por último en un script gameController donde cuando se termina el tiempo de juego ejecuta sus cosas del juego que todo eso funciona perfectamente y después lo siguiente para mandar la puntuación y desbloquear logros:

            if (Social.localUser.authenticated)
            {
                
//Mandamos la puntuacion al ranking de google Social.ReportScore(sumScore.score, "CgkIk4rB19gdEAIAAA", (bool success) => { }); //Activamos las medallas correspondientes if (sumScore.score >= 300) { Social.ReportProgress("CgkIk4rB19gdEAIAAA", 100.0, (bool success) => { }); } if (sumScore.score >= 450) { Social.ReportProgress("CgkIk4rB19gdEAIAAA", 100.0, (bool success) => { }); } if (sumScore.score >= 600) { Social.ReportProgress("CgkIk4rB19gdEAIAAA", 100.0, (bool success) => { }); } if (sumScore.score >= 750) { Social.ReportProgress("CgkIk4rB19gdEAIAAA", 100.0, (bool success) => { }); } }
santipikanti

Acabo de instalar tu juego y a mi me funciona bien.
Yo no he usado la API de googleplay, asique no te puedo ayudar...

Un pregunta, por que en unos sitios llamas a "PlayGamesPlatform.Instance.localUser.authenticated" y en otros a "Social.localUser.authenticated" supongo que "Social" es una instancia de "PlayGamesPlatform.Instance", lo haces por legibilidad ?

1 respuesta
kesada7

#3 eyy gracias por contestar! ya lo solucioné pero como nadie posteo pues no respondí más al post!
En cuanto a tu pregunta te respondo, no, no lo hago así por legibilidad, de hecho en un principio usaba siempre una forma ya que se puede instanciar las funciones de google play de varias formas... pero como no me funcionaba estuve varios días quitando y poniendo cosas, cambiando cosas... compilando y volviendo a probar... y por eso al final se ha quedado el código un poco hecho mierda. Y todo para nada porque el fallo no estaba en el código, tuve un problema con las firmas de la aplicación a la hora de sincronizarla con los servicios de google play... fue una tontería pero que no había forma de sacarlo haciendo debugin y claro me tiré la de horas comiéndome la cabeza hasta el punto que estuve a punto de quitar esa parte del juego. Menos mal que soy bastante cabezón y hasta que no dí con la tecla no paré :f5:

gracias por la ayuda y probar el juego!

Usuarios habituales

  • kesada7
  • santipikanti