2016-12-02 4 views
0

Je crée un jeu multijoueur dans Unity.Comment annuler une salle lorsque aucun joueur adverse n'est disponible dans Google Play Jeux?

Pour créer une pièce, je me sers:

PlayGamesPlatform.Instance.RealTime.CreateQuickGame(MinOpponents, MaxOpponents, GameVariant, listener); 

Pour obtenir des progrès de la création de la pièce, je me sers:

public void OnRoomSetupProgress(float progress) { 
} 

La fonction ci-dessus, cependant, est simplement appelé une fois progress = 20 et puis, plus jamais s'il n'y a pas d'autres joueurs disponibles.

Depuis le début, je n'aurai pas beaucoup de joueurs utilisant cette application, je veux attendre 10 secondes pour se connecter à un autre joueur et s'il n'y a pas de joueurs, je veux commencer le jeu avec AI intégré . Pour cela, j'ai besoin d'annuler la progression actuelle de la configuration de la pièce d'une manière propre. Je ne sais pas comment je peux aller plus loin.

S'il vous plaît laissez-moi savoir si vous connaissez la solution pour ce scénario.

Répondre

0

En ce qui concerne le jeu multijoueur dans Unity, ce GitHub post a seulement discuté de quitter la pièce lorsque le jeu se termine en utilisant PlayGamesPlatform.Instance.RealTime.LeaveRoom(); pour lancer un appel à OnLeftRoom de votre écouteur.

Vous pouvez essayer Adding Real-time Multiplayer Support to Your Android Game spécifiquement Adding a waiting room UI qui stipule que

Si vous utilisez la salle d'attente interface utilisateur, vous n'avez pas besoin de mettre en œuvre une logique supplémentaire pour décider du moment où le jeu doit être démarré ou annulé, vu plus tôt dans shouldStartGame() et shouldCancelGame(). Lorsque vous obtenez un résultat Activity.RESULT_OK, vous pouvez commencer immédiatement puisque le nombre requis de participants a été connecté. De même, lorsque vous obtenez un résultat d'erreur dans l'interface utilisateur de la salle d'attente, vous pouvez simplement quitter la pièce.

Pour quitter la salle, appelez leave():

// leave room 
Games.RealTimeMultiplayer.leave(mGoogleApiClient, null, mRoomId); 

// remove the flag that keeps the screen on 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);