Problema con Unity, Google Services y Logros/Leaderboards

totespare

Buenas!

Veréis, tengo un problema con la conexión de Google Play Services a la hora mostrar logros y las puntuaciones. Cuando entro por primera vez a mi juego, logea y puedo verlas perfectamente, pero a la que cambio de escena, es como si la sesión se perdiera y ya no hiciera login ni nada. Los botones de mostrar logros y demás dejan de funcionar.

He probado en beta y en producción, y ocurre lo mismo. También he probado el "PlayGamesPlatform.Instance.IsAuthenticated();" para comprobar el logeo en lugar del "Social.localUser.authenticated", pero ocurre el mismo problema. En el logcat no encuentro nada raro... El código que uso es el siguiente:

spoiler

Estoy usando Unity 2018.2.8f1, la versión 0.9.50 del plugin de Unity para GPGS y un min target de 4.4 (kitkat). El target máximo es 8.1 (oreo).

Si alguien tiene alguna pista de qué puede ser... Se lo agradecería.

Hukha

Entiendo que no tienes nada DontDestroyOnLoad ni nada parecido para que al volver a la primera escena haga cosas raras, no?

Tiene pinta de que alguna configuración o algo cambia al entrar la primera vez y se queda de esa manera, de tal manera que al volver a la misma escena no funca

EDIT: También supongo que no te da error de autentificación ni nada.

Has probado a poner un DEBUG donde debería loguear para saber si es cosa del GPS o del código?
Según veo, si tu código llega al DEBUG bien, no debería tener problema. Hay gente con errores parecidos que reimportando el ASSET les ha ido bien por haberse importado mal..

(Pregunto mucho, pero estoy mirando a ver si encuentro algo xD)

1 respuesta
totespare

#2 aparte del script este, no hay nada más DontDestroyOnLoad, nop. He probado a poner esos botones en la escena del juego, y tampoco funcionan, o sea que no es problema de volver a la escena 1, sino de ir a la escena 2. Sólo se me ocurre poner un boton para cargar de nuevo la escena 1 y ver si sigue funcionando todo, para saber si es problema de la escena 2 que se carga algo, o de que al hacer el cambio se pierde algo.

El asset lo he reimportado mil veces y he probado varias versiones :(. Voy a poner alguna traza más en el debug y a hacer build de development a ver si me saca algo más de info el puto logcat.

1 respuesta
Hukha

#3 Puf, pues ya no se qué mirar xD

Prueba a cargar la escena 2 antes, en la escena 1, a ver si es tema de que cargue demasiado rápido, yo he tenido algún problema por el estilo...

Si no, ni idea, un error como el tuyo no he encontrado ninguno, solo parecidos xD

1 respuesta
kesada7

Como te comenté en el otro hilo yo tuve sino el mismo problema, muy parecido, que me mostraba las puntuaciones, jugaba una partida y ya no me las volvía a mostrar, se quedaba ahí cargando, eso si la puntuación de esa partida me la subía, ya que si cerraba el juego y volvía entrar a los 10 min volvía a funcionar y se veía la puntuación nueva. Que hice para solucionarlo? nada... que yo recuerde lo dejé así porque ya estaba quemado con el plugin después de otro problema que tuve con las firmas y el código SHA1 ya que cuando lo subes a la Play Store te la cambia y es esa nueva la que tienes que usar para configurar Google Play Service, y como era un mierdi juego que no lo iba a jugar nadie pues dije ya lo volveré a mirar cuando pase un tiempo y esté más calmado. Pues total que cuando lo probé al tiempo funcionaba perfectamente, ahora siempre me muestra las tabla siempre que mando la petición :man_shrugging:

Te recomiendo que intetes abrir un hilo aquí y expliques tu caso, que a mi me ayudaron bastante.

1 respuesta
totespare

#4 no se si ahora se le ha ido la olla o qué, pero no me logea nunca. Hace el amago, termina, le digo que me muestre los logros y me vuelve a logear. Mae mia...

#5 sí, recuerdo que me lo comentaste. Lo del SHA1 es porque el que tú pones al subir la app es la clave de upload de la apk, luego hay otra clare que es la de los servicios, y esa la ponen ellos (que es la que supongo que dices que te cambian), y que está arriba (certificado de firma de aplicaciones):

(no es mi foto)

Si veo que en un rato sigue sin funcionarme abro hilo ahí. Gracias!

kesada7

Estás probando el juego instalando .apk directamente de la memoria en tu teléfono o desde Google Play?

1 respuesta
totespare

#7 ambas :(

Jastro

Dudo que te solvente nada #1 pero mirando github en la documentación, se puede logear de forma silenciosa (Sin necesidad de dialogos de confirmación para permisos y esas cosas). Parece que a uno se lo solvento haciendo esto, prueba suerte.

public void Login() {
  PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build();
  PlayGamesPlatform.DebugLogEnabled = true;
  PlayGamesPlatform.InitializeInstance(config);
  PlayGamesPlatform.Activate();
  PlayGamesPlatform.Instance.Authenticate(LoggedInCallBack, true); //(El segundo parametro, activa el modo silencioso)
}

public void LoggedInCallBack(bool success) { //función que ejerce de callback
      if (success) {
        Debug.Log("DEBUG: Login success");
	} else {
	  Debug.Log("DEBUG: Login failed");
	}
    }

PD: He llorado fuerte al ver las llaves debajo de la función, puto C#

Edit: Unity no tiene nada nativo integrado? me sorprender con lo "grande" que es el motor :/

1 respuesta
totespare

#9 mañana lo pruebo, thanks. Unitynotiene na integrao de esto, es un plugin mierdoso el que hace el curro... Deberían meter algo, sip.

Y las llaves en la siguiente linea siempre en .net, pardillo, vuelvete a java! Jajaja

1 respuesta
Jastro

#10 Lo se, lo se, aunque no lo parezca empece en el mundillo con C++ y C#, pero vamos sigue matandome por dentro xD

1 respuesta
totespare

#11 buah chaval, ya lo he arreglao... Sabes la chorrada que era?

Pues bien, resulta que en mis dos botones de logros y leaderboards tenía attachado el controller que me gestionaba este tema, y el cual es el que pongo en #1 , y que tiene un DontDestroyOnLoad. Qué ocurre al volver a la escena principal? Que como el controller es un singleton, la escena no crea el que ya tiene por defecto, y deja el existente, por lo que la referencia del controller en mis botones deja de existir, así que es un "nullpointer" en toda regla, pero no creas que me chillaba Unity o algo no... Qué hijo puta!!

Ahora a ver si me uploadea los scores, y voy a añadir vibracion al toque de las flechitas para dar algo de feedback, y ya estaría.

totespare

Pues ahora el problema es que si envío una puntuación, ya no se me abren los leaderboards nunca jamás. Se abren y se cierran al instante, y tengo que REINSTALAR. Flipas. Creo que esto ya me pasó con el Palabrapps, pero no recuerdo qué mierda hice... xD

Y los logros se acaban "olvidando" y tengo que volver a conseguirlos al rato de desbloquearlos... No entiendo nada.

Usuarios habituales

  • totespare
  • Jastro
  • kesada7
  • Hukha