我正在使用Unity以及在此处找到的Unity的Google Play服务插件:https://github.com/playgameservices/play-games-plugin-for-unity

我正在尝试访问要包含在个人资料图片游戏中的玩家头像。问题是当我尝试访问Texture2D Social.localuser.image时,它始终返回null。经过更多研究,似乎代码使用某种AvatarURL来查找图像,而这是空的。我使用string.IsNullOrEmpty(AvatarURL)进行检查。有谁知道为什么AvatarURL为null,和/或我如何解决它。如果不是这样,是否有其他方法可以访问玩家头像以用于我的游戏中的个人资料图片。

这是我用来测试的代码:

PlayGamesPlatform.Activate();

//Authenticate User
Social.localUser.Authenticate((bool success) => {
    if(success) {
        Debug.Log("Successfully Authenticated");
        Textures.profilePic = Sprite.Create(Social.localUser.image, new Rect(0, 0, Social.localUser.image.width, Social.localUser.image.height), new Vector2(0.5f, 0.5f));
        SceneManager.LoadScene("Main Menu");
    } else {
        Debug.Log("Failed to Authenticate User");
        SceneManager.LoadScene("ErrorCanNotSignIn");
    }
});


设置Textures.profilePic时发生错误(Textures是我创建的另一个存储纹理的类,而profilePic是其中的静态Sprite变量)。它说有一个NullReferenceException:对象引用未设置为该对象的实例。

再次根据我所看到的,我认为错误的根源似乎是AvatarURL为空,因为它导致此代码,我很确定这是加载图像的原因,而不是运行该代码:

if (!mImageLoading && mImage == null && !string.IsNullOrEmpty(AvatarURL))
{
    Debug.Log("Starting to load image: " + AvatarURL);
    mImageLoading = true;
    PlayGamesHelperObject.RunCoroutine(LoadImage());
}


同样重要的是,我正在android设备上对此进行测试。

最佳答案

JeanLuc对this SO问题的回答


  Play Games Unity的Social.localUser.image的实现
  插件始终返回null。

07-24 14:19