Social.localuser.image始终返回null

时间:2016-08-08 21:15:25

标签: android unity3d google-play-services

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

我正在尝试访问玩家头像以包含在个人资料照片中。问题是当我尝试访问Texture2D Social.localuser.image时,它总是返回null。经过更多研究,似乎代码使用某种AvatarURL来查找图像,这就是null。我使用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为null,因为它导致了这个代码,我很确定是什么加载图像,而不是运行:

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

此外,如果它很重要,我在Android设备上测试它。

2 个答案:

答案 0 :(得分:1)

JeanLuc在this SO问题上回答的问题

  

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

答案 1 :(得分:0)

图像返回null的原因是因为它是异步加载的,因此您需要等待它。

此外,还有一个错误,您首先需要访问Social.localUser.userName。

此代码应正常工作:

expo start

积分: https://github.com/playgameservices/play-games-plugin-for-unity/issues/1056#issuecomment-212257972