2017-09-23 1 views
0

Donc. J'ai fait un jeu avec unity 5. Et j'ai téléchargé et configuré le plugin google play services. Je peux me connecter et débloquer des réalisations avec succès. Mais pour une raison quelconque, le Social.ShowAchievementsUI(); et Social.ShowLeaderboardUI(); ne fonctionnera pas. Ou quelque chose ne va pas apparaître. Donc, j'essaie d'afficher la liste des réalisations et d'afficher la liste des classements disponibles. J'ai 5 réalisations et 4 classements. J'ai cette version du jeu sur Google Play alpha test. Avec les 2 boutons pour ouvrir le menu des succès et les classements mais ceux-ci ne fonctionneront pas. Mon code pour se connecter est:AchievementsUI et LeaderboardsUI ne s'affichera pas. Signature dans les travaux et les réalisations popups débloqués fonctionnent

void Start() { 
    if (PlayGamesPlatform.Instance.IsAuthenticated() == false) 
    { 
     PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); 
     PlayGamesPlatform.InitializeInstance(config); 
     PlayGamesPlatform.DebugLogEnabled = true; 
     PlayGamesPlatform.Activate(); 
     SignIn(); 
    } 

void SignIn() 
{ 
     Social.localUser.Authenticate((bool success) => 
     {}); 
} 

pour montrer achievementsUI:

public void ShowAchievementsUI() 
{ 
    Social.ShowAchievementsUI(); 
} 

pour montrer Leaderboard ui:

public void ShowLeaderboardsUI() 
{ 
    Social.ShowLeaderboardUI(); 
} 

Ces 2 sont appelés à partir de boutons.

J'utilise:

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

Répondre

1

Ajout:

<activity android:name="com.google.games.bridge.NativeBridgeActivity" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" /> 

Pour AndroidManifest.xml résolu le problème

0

d'abord créer un script pour vos commandes playgames. Le script lui-même sera juste une classe publique; Cependant, toutes les commandes seront statiques afin que vous puissiez les appeler à partir d'autres scripts.

using GooglePlayGames; 
using GooglePlayGames.BasicApi; 
using UnityEngine; 

public class PlayGamesScript : MonoBehaviour { 

// Use this for initialization 
void Start() { 
    PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); 
    PlayGamesPlatform.InitializeInstance(config); 
    PlayGamesPlatform.Activate(); 
    SignIn(); 
} 

// PRE: None 
// POST: Logs player into Google Play Games 
void SignIn() 
{ 
    Social.localUser.Authenticate (success => {}); 
} 

#region Achievements 
// PRE: Achievement created in Google Play Developer and the 
// achievement has been achieved by the player 
// POST: Unlocks the achievement for the player 
public static void UnlockAchievement(string id) 
{ 
    Social.ReportProgress(id, 100, success => { }); 
} 

// PRE: Achievement created in Google Play Developer and set to Incremental 
// achievement 
// POST: Increments the achievement by selected steps established by 
// the stepsToIncrement variable 
public static void IncrementAchievement(string id, int stepsToIncrement) 
{ 
    PlayGamesPlatform.Instance.IncrementAchievement(id, stepsToIncrement, success => { }); 
} 

// PRE: Achievements created in Google Play Developer and player 
// is logged in 
// POST: Shows the Achievements UI 
public static void ShowAchievementsUI() 
{ 
    if(PlayGamesPlatform.Instance.IsAuthenticated()) 
     Social.ShowAchievementsUI(); 
    else 
     Social.localUser.Authenticate((bool success)=>{ 
      Social.ShowAchievementsUI(); 
     }); 
} 
#endregion /Achievements 

#region Leaderboards 
// PRE: Leaderboard created in Google Play Developer and player is logged in 
// POST: Reports the score to the leaderboard id specified for Google Play 
public static void AddScoreToLeaderboard(string leaderboardId, long score) 
{ 
    Social.ReportScore(score, leaderboardId, success => { }); 
} 
// PRE: Leaderboard created in Google Play Developer and player is logged in 
// POST: Accesses the PlayGamesScript to display the Leaderboard UI 
public static void ShowLeaderboardsUI() 
{ 
    if(PlayGamesPlatform.Instance.IsAuthenticated()) 
     Social.ShowLeaderboardUI(); 
    else 
     Social.localUser.Authenticate((bool success)=>{ 
      Social.ShowLeaderboardUI(); 
     }); 
} 
#endregion /Leaderboards 

} 

Vous appelez ces fonctions à partir d'un autre script (le script qui appelle pour afficher le classement ou la réalisation UI), par exemple:

public class GooglePlayUIController : MonoBehaviour { 

    // PRE: Leaderboard created in Google Play Developer 
    // POST: Accesses the PlayGamesScript to display the Leaderboard UI 
    public void ShowLeaderboards() { 
     PlayGamesScript.ShowLeaderboardsUI(); 
    } 

    // PRE: Achievements created in Google Play Developer 
    // POST: Accesses the PlayGamesScript to display the Achievement UI 
    public void ShowAchievements() { 
     PlayGamesScript.ShowAchievementsUI(); 
    } 
} 

De là, vous pouvez ajouter ces fonctions sur vos boutons par la Éditeur Unity sur la fonction OnClick(); C'est ainsi que je mets le mien. Bien sûr, n'oubliez pas d'ajouter vos données de ressources dans Unity dans les onglets Fenêtre -> Google Play Jeux -> Configuration Android afin que vous puissiez appeler l'ID de chacune de vos réalisations, ou appelez au classement. id, via GPGSIds. Par exemple,

// PRE: A game has been played until all lives equal zero 
// POST: A score has been posted to the online leaderboards 
private void PostScore() { 
    PlayGamesScript.AddScoreToLeaderboard (GPGSIds.high_score, player.score); 
} 
+0

donc si je les appelle avec dans ce cas ShowAchievementsUI() sur un bouton, il ne fonctionnera pas? Public vide ShowAchievementsUI() } Je l'ai configuré correctement. J'ai le succès des popups débloqués qui fonctionnent et tout ça. mais Social.ShowAchievementsUI() et Social.ShowLeaderboardUIi() ne fonctionneront pas –

+0

Ce code que vous avez fourni ne devrait pas changer quoi que ce soit puisqu'il est similaire au mien. Je suppose que vous n'avez pas lu la question. –

+0

en fait c'est différent car vous essayez d'ouvrir l'interface utilisateur directement que le mien accède à la fonction à partir d'une fonction statique. J'ai eu le même problème que vous et c'est ma solution. Découvrez cette vidéo YouTube si vous ne trouvez toujours pas la réponse à votre question .... –