¿La API del complemento de servicios de Google Play de Unity no está sincronizada con la función de interfaz de usuario de Show Leaderboard?
Utilizo Google Play Games Services Unity Plugin para crear un juego para Android como se describe en: https://github.com/playgameservices/play-games-plugin-for-unity
El problema:
- Unidad 3d - Clase Física para asistir
- Android - Reproducción de errores Player: CommandInvokationFailure: Error al volver a empaquetar los recursos
- Vuforia & Unity 1.5 no renderiza objeto en la escena en Android
- Android - Servicio de fondo de juego de Tamagotchi
- ¿Cómo puedo conectar mi teléfono Android a la unidad para los juegos de prueba?
Cuando carga puntuaciones usando el API (objeto de API social o PlayGamesPlatform.Instance del plugin google play), obtengo puntajes desactualizados . Pero, cuando uso la función ShowLeaderBoardUI () en su lugar, las puntuaciones son correctas en la GUI.
Así que no hay ningún problema en publicar las puntuaciones.
Utilizo el siguiente fragmento para cargar las puntuaciones de los usuarios en el Cuadro de resultados de Google Play Game Services:
void LoadUsersAndDisplay(int leaderBoardID,ILeaderboard lb,LeaderBoardEntry[] resultingEntries) { // 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) PlayGamesPlatform.Instance.LoadUsers(userIds.ToArray(), (users) => { string status = "Leaderboard loading: " + lb.title + " count = " + lb.scores.Length; int currentUserIndex = 0; foreach(IScore score in lb.scores) { IUserProfile user = users[currentUserIndex]; status += "\n" + score.formattedValue + " by " + (string)( (user != null) ? user.userName : "**unk_" + score.userID + "**"); resultingEntries[currentUserIndex] = new LeaderBoardEntry(score.rank,user.userName,score.value); currentUserIndex++; } // Get the local user score LeaderBoardEntry localUserEntry = new LeaderBoardEntry(lb.localUserScore.rank, Social.localUser.userName,lb.localUserScore.value); // Notify the observers about the receiving of the scores foreach (LeaderBoardObserver currentObserver in observers) { Debug.Log ("Notifying the leaderboard observer"); currentObserver.OnScoresReceived (leaderBoardID,resultingEntries,localUserEntry); } Debug.Log(status); }); } public void getScores(int lbID){ ILeaderboard lb = PlayGamesPlatform.Instance.CreateLeaderboard(); lb.id = leaderboards [lbID].lbOfficialID; lb.timeScope = TimeScope.AllTime; lb.userScope = UserScope.Global; LeaderBoardEntry[] resultingEntries = null; lb.LoadScores(ok => { if (ok) { resultingEntries = new LeaderBoardEntry[lb.scores.Length]; LoadUsersAndDisplay(lbID,lb,resultingEntries); } else { Debug.Log("Error retrieving leaderboardi"); } }); Debug.Log ("Have " + observers.Count + " lbObservers"); }
Tengo la salida siguiente cuando imprimo el leaderboard recibido:
>>Leaderboard loading: Quick Reaction Mode World Ranking count = 1 >>I/Unity (16088): 45 by firatercis
Pero cuando muestro las puntuaciones de todos los tiempos para los usuarios globales, tengo la siguiente captura de pantalla:
Primero, el marcador estaba vacío, anoté 45 puntos. Vi el punto 45 en ambos lados no había ningún problema. Luego anoté 50. Pero el resultado que logré por el API nunca se actualiza.
He eliminado y reinstalado el juego, no. He limpiado la caché de la aplicación, y no debería haber ninguna copia del número 45 en cualquier lugar, pero constantemente obtener 45 puntos mediante el uso de la API. Por favor ayuda, ¿dónde puedo estar equivocado?
- Proguard con código de error de devolución Unity3d 1
- Cómo ocultar InputField caja de entrada adicional en unity3d
- ¿Es práctico iniciar un juego de Unity desde una aplicación de Android y volver de Unity a la aplicación?
- ¿Cómo obtener la lista de aplicaciones instaladas con Unity3D?
- Unity Camera Patch
- Unity no puede fusionar el error de generación de manifiestos de Android
- Consola para programadores de Android: una huella dactilar errónea tras la creación de la versión con Android Studio
- Cómo abrir la URL en la aplicación Gear VR
Puede que su configuración no se haya completado como se muestra en la documentación:
Añade logros y tablas de clasificación a tu juego en la Consola para programadores de Google Play. Para cada logro y tabla de líderes que configure, asegúrese de anotar el ID de logro o el ID de clasificación correspondiente, ya que serán necesarios al realizar las llamadas a la API. El logro y los ID de la tabla de líderes son cadenas alfanuméricas (por ejemplo, "Cgkx9eiuwi8_AQ").
Vuelva a comprobar su código.
He solucionado este problema mediante el cambio LeaderboardManager.LoadLeaderboardData () para utilizar Types.DataSource.NETWORK_ONLY vs CACHE_OR_NETWORK.
Asegúrate de que la configuración de la tabla de clasificación de la Consola para programadores de Google Play sea la que has diseñado. En particular, asegúrese de que la ordenación esté definida en "Mayor es mejor" y que no tiene ningún conjunto de límites . Tal vez toggling "Habilitar la protección contra manipulaciones" también es una buena idea …
Yo habría escrito esto como un comentario y pidió alguna aclaración, pero no tengo los puntos de reputación. 🙁