如何在Unity C#中显示Facebook好友的个人资料图片



所以,我几乎一整天都在手机应用程序中实现排行榜,除了在你朋友的分数旁边显示他们的个人资料图片外,我已经成功地完成了所有工作。

在V6.x中,您可以使用FB.GetPictureUrl,但现在我希望有某种FB。API实现允许我做类似的事情?

不管怎样,以下是我做事的方式

    private void ScoresCallBack(IGraphResult result)
{
    int num = -1;
    var dataList = result.ResultDictionary ["data"] as List<object>;
    foreach (Transform child in leaderboardPanel.transform) 
    {
        GameObject.Destroy (child.gameObject);
    }
    foreach (object player in dataList) 
    {
        num++;
        var dataDict = dataList [num] as Dictionary<string, object>;
        long score = (long)dataDict ["score"];
        var user = dataDict ["user"] as Dictionary<string, object>;
        string userName = user ["name"] as string;
        string userID = user ["id"] as string;
        GameObject ScorePanel;
        ScorePanel = Instantiate (scoreEntryPanel) as GameObject;
        ScorePanel.transform.SetParent (leaderboardPanel.transform, false);
        ScorePanel.SetActive (true);
        ScorePanel.transform.GetChild(1).GetComponent<Text>().text = userName;
        ScorePanel.transform.GetChild (2).GetComponent<Text> ().text = score.ToString ();
    }
}

哦,我打的API电话是

FB.API("/app/scores?fields=score,user.limit(30)",HttpMethod.GET,ScoresCallBack)

所以,谢谢!有什么想法吗?

您可以通过获取个人资料图片

FB.Api("{facebook_id}?fields=picture", HttpMethod.GET, PictureCallBack)

然后,你需要对下载纹理进行http请求并更新它

希望得到帮助!!

private void PictureCallBack(IGraphResult result) {
  JSONObject json = new JSONObject(result.RawResult);
  StartCoroutine(DownloadTexture(json["picture"]["data"]["url"].str, profile_texture));
}
IEnumerator DownloadTexture(string image_url, Image profile_picture) {
    WWW www = new WWW(url);
    yield return www;
    profile_picture = = www.texture;
}

PS。我还没有测试这个代码。

以下是我处理类似问题的方法。将所有基本数据(用户名、分数)加载到预制列表项后,每个列表项负责加载自己的个人资料图片。

在FacebookScript 中

public void downloadProfilePic(string user_id, FacebookDelegate<IGraphResult> callback){
     FB.API("https" + "://graph.facebook.com/" + user_id + "/picture? 
         type=square&height=128&width=128", HttpMethod.GET, callback);  
}

然后从ListViewItem脚本

private void downloadProfilePic(string user_id){
    FindObjectOfType<FacebookScript>().downloadProfilePic(user_id, delegate (IGraphResult result){
        if(result.Texture){
            profileImage.sprite = Sprite.Create(result.Texture, new Rect(0, 0, 128 , 128), new Vector2());
        }
    });
}

最新更新