public void Populate(PlayerLeaderboardEntry myInfo) { positionTxt.text = (myInfo.Position + 1).ToString(); nameTxt.text = myInfo.DisplayName; killsTxt.text = myInfo.StatValue + " kills"; GetUserDataRequest request = new GetUserDataRequest(); request.PlayFabId = myInfo.PlayFabId; request.Keys = new List<string>(); request.Keys.Add(GameConstants.facebookPictureKey); PlayFabClientAPI.GetUserData(request, OnPlayerInfoLoaded, OnPlayerInfoLoadError); }
private void GetUserInfoAndUpdateLeaderboard(PlayFab.ClientModels.PlayerLeaderboardEntry leaderBoardLine, GameObject leaderboardGameObject, GetLeaderboardResult result) { //Coleta o id do Facebook do usuário que está no rank através do Display Name que atualizamos ao usuário efetuar o login. string userFacebookId = leaderBoardLine.DisplayName; //Utiliza o SDK do Facebook para coletar as informações do usuário. O valor "/" + userFacebookId serve //para indicar de qual usuário queremos os dados. O valor HttpMethod.GET indica que a nossa chamada ao //facebook tem a intenção de somente coletar dados. FB.API("/" + userFacebookId, HttpMethod.GET, //Esta é uma outra forma de criar uma função de callback, o userInfoResult é a váriavel que //recebe o resultado que é passado para a função de callback (userInfoResult) => { //Caso o resultado seja nulo, deu algum erro ao coletar os dados. if (userInfoResult == null) { Debug.Log("Não foi possível coletar os dados do usuário no Facebook."); //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento. if (leaderBoardLine.Position + 1 == result.Leaderboard.Count) { //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados. FacebookAndPlayFabInfo.leaderboardLoaded = true; //Atualiza a váriavel para falso indicando que os dados estão já foram carregados. FacebookAndPlayFabInfo.leaderboardIsLoading = false; Debug.Log("Os dados do Leaderboard foram carregados."); } return; } //Verifica se o retorno não foi um erro, ou algum tipo de cancelamento caso não seja nenhum desses tipos indica //que foi possível coletar os dados do facebook com sucesso. if (string.IsNullOrEmpty(userInfoResult.Error) && !userInfoResult.Cancelled && !string.IsNullOrEmpty(userInfoResult.RawResult)) { Debug.Log("Sucesso ao coletar os dados da conta do usuário no Facebook"); try { //A resposta do Facebook vem em formato de Json e com isso nós convertemos o Json para um Dictionary //para ser mais facil de coletar os dados Dictionary <string, object> dict = Json.Deserialize(userInfoResult.RawResult) as Dictionary <string, object>; string userFacebookName = dict["name"] as string; //Pega o objeto que possui as informações de um jogador no Leaderboard. //GameObject playerLeadeboardGameObject = leaderboardGameObject.transform.FindChild("Player (" + (leaderBoardLine.Position + 1) + ")").gameObject; //Atualiza o texto com a posiçao do jogador no Leaderboard. //playerLeadeboardGameObject.transform.FindChild("Position").GetComponent<Text>().text = (leaderBoardLine.Position + 1).ToString(); //Atualiza o texto com o nome do jogador no Facebook. //playerLeadeboardGameObject.transform.FindChild("Name").GetComponent<Text>().text = userFacebookName; //Atualiza o texto com o valor do Score do jogador no Leaderboard. //playerLeadeboardGameObject.transform.FindChild("Score").GetComponent<Text>().text = leaderBoardLine.StatValue.ToString(); Debug.Log(leaderBoardLine.StatValue); Debug.Log(userFacebookName); AddHighscoreEntry(leaderBoardLine.StatValue, userFacebookName); //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento. if (leaderBoardLine.Position + 1 == result.Leaderboard.Count) { //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados. FacebookAndPlayFabInfo.leaderboardLoaded = true; //Atualiza a váriavel para falso indicando que os dados estão já foram carregados. FacebookAndPlayFabInfo.leaderboardIsLoading = false; Debug.Log("Os dados do Leaderboard foram carregados."); } } //Usado caso o Facebook não tenha retornado o id ou o nome do usuário. catch (KeyNotFoundException e) { //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento. if (leaderBoardLine.Position + 1 == result.Leaderboard.Count) { //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados. FacebookAndPlayFabInfo.leaderboardLoaded = true; //Atualiza a váriavel para falso indicando que os dados estão já foram carregados. FacebookAndPlayFabInfo.leaderboardIsLoading = false; Debug.Log("Os dados do Leaderboard foram carregados."); } Debug.Log("Não foi possível coletar os dados do usuário no Facebook. Erro: " + e.Message); } } else { //Verifica se está no ultimo registro do Leadeboard. Para indicar que finalizou o carregamento. if (leaderBoardLine.Position + 1 == result.Leaderboard.Count) { //Atualiza a váriavel para verdadeiro indicando que os dados ainda já foram carregados. FacebookAndPlayFabInfo.leaderboardLoaded = true; //Atualiza a váriavel para falso indicando que os dados estão já foram carregados. FacebookAndPlayFabInfo.leaderboardIsLoading = false; Debug.Log("Os dados do Leaderboard foram carregados."); } Debug.Log("Não foi possível coletar os dados do usuário no Facebook."); } }); }