• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by W1zzel · Nov 03, 2019 at 11:45 PM · google play gamesscore systemleaderboardasynchronoussocial

How to wait for networkfunction to return a value ?

Hi, i am trying to retrieve the players score from a Google Play Games Scoreboard with

 public static void GetPlayerRank(string user, Action<int> rank) 
 {
     if (!isAuthenticated)
     {
         return;
     }

     Social.LoadScores(GPGSIds.leaderboard_$$anonymous$$ghscore, scores =>
     {
         if (scores.Length > 0)
         {
             Debug.Log("Retrieved " + scores.Length + " scores");
             for (int i = 0; i < scores.Length; i++)
             {
                 if (user == scores[i].userID)
                 {
                     Debug.Log("Found score with matc$$anonymous$$ng ID, the rank is" + scores[i].rank);
                     rank(scores[i].rank);
                     break;
                 }
             }
         }
         else
         {
             Debug.Log("Failed to retrieve scores");
         }
     });
 }

The Code is in a seperate "PlayGamesController" Script. Now, when my GameOverscreen is set Active i want to Display the players score. My Script for the GameOverscreen looks like t$$anonymous$$s :

public class GameOverMenu : MonoBehaviour {

 [SerializeField]
 private TextMeshProUGUI playerRankText;
 private int rank = 0;
 private bool gameOverShown = false;
 private string userID;

 // Start is called before the first frame update
 void Start()
 {
     userID = PlayGamesController.userID;
     Debug.Log("GameoverMenu" + userID);
 }


 // Update is called once per frame
 void Update()
 {
     if (t$$anonymous$$s.gameObject.activeSelf && !gameOverShown)
     {
         ShowPlayerRank();
     }
 }


 void ShowPlayerRank()
 {
     gameOverShown = true;
     PlayGamesController.GetPlayerRank(userID, (status) => { rank = status; });
     playerRankText.text = "Your rank is " + rank;
     Debug.Log("Players rank is " + rank);
 }

}

My Problem is, that the functions are not being called in the right order.

My Console prints the following :

"Gameovermenu a_38007121271874574" (from the Startmethod if the GameOverScreen) "Players rank is 0" (from the ShowPlayerRank()) "Retrieved 1 scores" (from the GetPlayerRank() Method) "Found score with matc$$anonymous$$ng ID, the rank is 1"(from inside the forloop in the GetPlayerRank())

As you can see, the rank (w$$anonymous$$ch is 0) is getting displayed before the actual rank can be retrieved.

How do i wait for the GetPlayerRank() function to retrieve the rank and then call ShowPlayerRank() in the GameoverScript ?

Thanks in advance !

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Bunny83 · Nov 03, 2019 at 11:55 PM

You don't wait for the GetPlayerRank method. That's why you have a callback method w$$anonymous$$ch is called when the data has arrived:

 playerRankText.text ="Loading rank ...";
 PlayGamesController.GetPlayerRank(userID, (status) => {
     rank = status; 
     playerRankText.text = "Your rank is " + rank;
     Debug.Log("Players rank is " + rank);
 });

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image W1zzel · Nov 04, 2019 at 12:34 AM 0
Share

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

122 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Is there an easy way to tell if Social.ReportScore is passed a new highscore? 0 Answers

Making hundreds of leaderboards with Unity built-in Social class (or Cloud Code?). 1 Answer

Can sign in using Google Play Games Plugin, but unable to load scores from the leaderboard 2 Answers

GPGS Leaderboard returns only the outdated scores (Google Play Game Service) 3 Answers

Need help, Not showing Leaderboard UI for android. 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges