2016-08-08 29 views
1

Ich bin mit Unity zusammen mit der Google Play-Dienste Plugin für Unity finden Sie hier über: https://github.com/playgameservices/play-games-plugin-for-unitySocial.localuser.image immer Rückkehr null

Ich versuche, die Spieler für den Zugriff auf Avatar in einem Profil pic im Spiel enthalten sein . Das Problem ist, wenn ich versuche, auf Texture2D Social.localuser.image zuzugreifen, es gibt immer Null zurück. Nach mehr Forschung scheint es, dass der Code eine Art von AvatarURL verwendet, um das Bild zu finden, und das ist die Sache, die null ist. Ich habe string.IsNullOrEmpty (AvatarURL) verwendet, um dies zu überprüfen. Wer weiß, warum AvatarURL null ist und/oder wie ich es beheben kann. Wenn nicht, gibt es eine alternative Möglichkeit, auf den Avatar des Spielers zuzugreifen, um ein Profilbild in meinem Spiel zu verwenden.

Hier ist der Code, den ich verwendet, um dies zu testen:

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"); 
    } 
}); 

Der Fehler tritt auf, wenn Textures.profilePic Einstellung (Texturen ist eine andere Klasse I, dass Geschäfte Texturen erstellt, und profilePic ist eine statische Sprite Variable in it) . Es besagt, dass eine NullReferenceException vorhanden ist: Objektreferenz wird nicht auf eine Instanz des Objekts festgelegt.

Wieder basierend auf dem, was ich gesehen habe, scheint die Quelle des Fehlers zu sein, die AvatarURL ist Null, da es diesen Code verursacht, der ziemlich sicher ist, was das Bild lädt, nicht zu laufen:

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

Auch wenn es wichtig ist, teste ich dies auf einem Android-Gerät.

Antwort

1

Frage von JeanLuc auf this SO

Die Implementierung für Social.localUser.image der Play Games Unity Plugin kehrt immer null beantwortet die Frage.

+0

Okay, das ist ein bisschen seltsam, aber ich habe Social.localUser.image erhalten, um nicht null zurück zu bekommen. Ich habe es direkt das Sprite eines gameObject ingame geändert. Als ich das zuerst tat, blieb das Sprite null und blieb komplett leer, aber aus irgendeinem Grund, als ich die Szene von dieser Szene auf eine andere umstellte, funktionierte es und das Profilbild des Spielers war da. – Bhaskar

+0

Du solltest dies auf dem GitHub posten Diskussion, weil ist sehr seltsam und muss von Google-Team gelöst werden. Danke für deine Antwort! – Cabrra

+0

Es ist immer noch nicht genau das, was ich will, weil es nur funktioniert, wenn der Spieler die Szene wechselt (Hauptmenü zum Einstellungsbildschirm) und dann zur ursprünglichen Szene zurückkehrt, dass das Sprite tatsächlich zum Profilbild der Person wechselt. Hast du eine Idee, warum es sich so verhalten könnte? – Bhaskar