Erste Schritte mit dem Google Play Spiele-Plug-in für Unity

In diesem Artikel wird beschrieben, wie Sie Ihr Unity-Projekt für die Verwendung des Google Play Spiele-Plug-ins für Unity einrichten. Zu den Aufgaben gehören die Einrichtung des Projekts, die Auswahl einer sozialen Plattform und die Anmeldung der Spieler.

Vorbereitung

Plug-in-Installation

  1. Rufen Sie das Plug-in mit einer der folgenden Optionen ab:

  2. Suchen Sie im Verzeichnis current-build nach der Datei unitypackage. Diese Datei ist das Plug-in. Es sollte beispielsweise so aussehen:

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    
  3. Öffne dein Spielprojekt in Unity.

  4. Importieren Sie die Datei unitypackage in die Assets Ihres Projekts. Klicken Sie dazu auf den Menüpunkt Assets > Paket importieren > Benutzerdefiniertes Paket.

  5. Ihre aktuelle Build-Plattform muss auf Android festgelegt sein.

    1. Klicken Sie im Hauptmenü auf File > Build Settings... (Datei > Build-Einstellungen).

    2. Wählen Sie Android aus und klicken Sie auf Plattform wechseln.

    3. Unter Fenster > Google Play Spiele sollte ein neuer Menüpunkt angezeigt werden. Ist dies nicht der Fall, aktualisieren Sie die Assets. Klicken Sie dazu auf Assets > Aktualisieren und versuchen Sie dann noch einmal, die Build-Plattform festzulegen.

Android-Ressourcen in der Play Console

Jeder Erfolg, jede Bestenliste und jedes Ereignis, die Sie in der Play Console erstellen, enthält eine Android-Ressource, die Sie bei der Einrichtung Ihres Unity-Projekts verwenden.

  1. Hier findest du die Android-Ressourcen für dein Spiel.

    1. Öffne in der Play Console das Play-Spieldienste-Projekt für dein Spiel.

    2. Klicken Sie auf den Tab Erfolge und dann auf Ressourcen abrufen.

    3. Klicken Sie im Fenster Ressourcen exportieren auf den Tab Android.

    4. Wählen Sie den XML-Inhalt aus und kopieren Sie ihn.

Unity-Projekt einrichten

  1. Fügen Sie Ihrem Unity-Projekt die Android-Ressourcen hinzu.

    1. Klicken Sie in Unity auf ** Fenster > Google Play Spiele > Einrichten... > Android-Einrichtung **.

    2. Führen Sie in den Einrichtungsfenstern die folgenden Schritte aus:

    3. Verzeichnis zum Speichern von Konstanten: Der Ordner für die Konstantendatei.

    4. Name der Konstantenklasse: Der Name der zu erstellenden C#-Klasse, einschließlich des Namespace.

    5. Ressourcendefinition: Füge hier die Android-Ressourcendaten aus der Play Console ein.

    6. Webclient-ID: Die Client-ID der verknüpften Web-App. Dies ist nur erforderlich, wenn Sie ein webbasiertes Backend für Ihr Spiel haben und einen Serverauthentifizierungscode benötigen, um vom Backend-Server gegen ein Zugriffstoken auszutauschen, oder wenn Sie ein ID-Token für den Spieler benötigen, um andere API-Aufrufe außerhalb des Spiels auszuführen.

    7. Tippe auf Einrichten. Dadurch wird Ihr Spiel mit der Client-ID konfiguriert und eine C#-Klasse generiert, die Konstanten für jede Ihrer Android-Ressourcen enthält.

Android-Einrichtung

Richten Sie den Pfad zu Ihrer Android SDK-Installation in Unity ein. Diese finden Sie im Einstellungsmenü im Abschnitt External Tools (Externe Tools).

Wenn Sie Ihr Unity-Spiel für die Ausführung mit Google Play Spiele unter Android konfigurieren möchten, öffnen Sie zuerst den Android SDK Manager und prüfen Sie, ob Sie die folgenden Pakete heruntergeladen haben. Je nachdem, ob Sie den SDK-Manager von Android Studio oder den eigenständigen SDK-Manager verwenden, können die Namen der Komponenten unterschiedlich sein. – Google Play-Dienste – Android-Supportbibliothek – Lokales Maven-Repository für Supportbibliotheken (auch bekannt als Android Support Repository) – Google-Repository – Android 6.0 (API 23) (Dies hat keine Auswirkungen auf die SDK-Mindestversion).

Als Nächstes konfigurieren Sie den Paketnamen Ihres Spiels. Klicken Sie dazu auf File > Build Settings (Datei > Build-Einstellungen), wählen Sie die Android-Plattform aus und klicken Sie auf Player Settings (Player-Einstellungen), um das Fenster mit den Playereinstellungen von Unity aufzurufen. Suchen Sie in diesem Fenster unter Other Settings (Weitere Einstellungen) nach der Einstellung Bundle Identifier (Bundle-ID). Geben Sie dort den Paketnamen ein (z. B. com.example.my.awesome.game).

Damit Sie sich in den Play-Spieldiensten anmelden können, müssen Sie Ihre APK-Datei signieren. Achten Sie darauf, dass Sie sie mit dem richtigen Zertifikat signieren, das dem SHA1-Zertifikatfingerabdruck entspricht, den Sie während der Einrichtung in der Entwicklerkonsole eingegeben haben.

Klicken Sie dann auf den Menüpunkt Fenster |Google Play Spiele|Einrichtung – Android-Einrichtung. Der Android-Einrichtungsbildschirm wird angezeigt.

Geben Sie den Namen der Constants-Klasse ein. Dies ist der Name der voll qualifizierten Klasse, die die IDs der Spielressourcen enthält und aktualisiert oder erstellt wird. Der Name hat das Format <namespace>.<classname>. Beispiel: AwesomeGame.GPGSIds

Fügen Sie die Daten zur Ressourcendefinition ein. Dies sind die XML-Daten aus der Google Play Developer Console, die die Ressourcen-IDs sowie die App-ID für Android enthalten.

Du findest diese Daten in der Google Play Console, indem du auf einer der Ressourcenseiten (z.B. Erfolge oder Bestenlisten) auf „Ressourcen abrufen“ und dann auf „Android“ klickst.

Klicken Sie nach dem Einfügen der Daten in den Textbereich auf die Schaltfläche Einrichten.

Hinweis:Wenn Sie eine Webanwendung oder einen Back-End-Server für Ihr Spiel verwenden, können Sie die Webanwendung mit dem Spiel verknüpfen, um das ID-Token und/oder die E-Mail-Adresse des Spielers abzurufen. Verknüpfen Sie dazu eine Webanwendung mit dem Spiel in der Google Play Developer Console und geben Sie die Client-ID für die Webanwendung im Einrichtungsdialogfeld ein.

Zusätzliche Anleitungen zum Entwickeln von Apps für Android unter Windows

Wenn Sie Windows verwenden, müssen Sie dafür sorgen, dass Unity auf Ihre Java SDK-Installation zugreifen kann. Aktion:

  1. Legen Sie für die Umgebungsvariable JAVA_HOME den Installationspfad des Java SDK fest (z. B. C:\Program Files\Java\jdk1.7.0_45).
  2. Fügen Sie der Umgebungsvariablen PATH den Ordner bin des Java SDK hinzu (z. B. C:\Program Files\Java\jdk1.7.0_45\bin).
  3. Neu starten.

So bearbeiten Sie Umgebungsvariablen:Klicken Sie in Windows 2000/XP/Vista/7 mit der rechten Maustaste auf Arbeitsplatz und dann auf Eigenschaften. Gehen Sie dann zu Erweiterte Systemeigenschaften (oder Systemeigenschaften, klicken Sie auf den Tab Erweitert und klicken Sie dann auf Umgebungsvariablen. Drücken Sie unter Windows 8 die Windows-Taste + W und suchen Sie nach Umgebungsvariablen. Weitere Informationen finden Sie in der Dokumentation für Ihre Windows-Version.

Projekt ausführen

Wenn Sie mit dem Smoketest-Beispiel arbeiten, sollten Sie das Projekt zu diesem Zeitpunkt erstellen und ausführen können. Sie sehen den automatischen Anmeldeversuch, wenn Smoketest gestartet wird.

Klicken Sie zum Erstellen und Ausführen unter Android auf File > Build Settings (Datei > Build-Einstellungen), wählen Sie die Android-Plattform aus und klicken Sie dann auf Switch to Platform (Zur Plattform wechseln) und anschließend auf Build and Run (Erstellen und ausführen).

Soziale Plattform auswählen

Das Google Play Spiele-Plug-in implementiert die soziale Schnittstelle von Unity, um die Kompatibilität mit Spielen zu gewährleisten, die diese Schnittstelle bereits für die Integration in andere Plattformen verwenden. Einige Funktionen gibt es jedoch nur in Play Spiele und werden als Erweiterungen der standardmäßigen Social-Media-Schnittstelle von Unity angeboten.

Auf die Standard-API-Aufrufe kann über das Social.Active-Objekt zugegriffen werden, das ein Verweis auf eine ISocialPlatform-Schnittstelle ist. Um auf die nicht standardmäßigen Google Play Spiele-Erweiterungen zuzugreifen, kann das Objekt Social.Active in die Klasse PlayGamesPlatform umgewandelt werden, in der die zusätzlichen Methoden verfügbar sind.

Plug-in verwenden, ohne die standardmäßige soziale Plattform zu überschreiben

Wenn Sie PlayGamesPlatform.Activate aufrufen, wird Google Play Spiele zur Standardimplementierung für soziale Plattformen. Das bedeutet, dass statische Aufrufe von Methoden in Social und Social.Active vom Google Play Spiele-Plug-in ausgeführt werden. Dies ist das gewünschte Verhalten für die meisten Spiele, die das Plug-in verwenden.

Wenn Sie die Standardimplementierung jedoch aus irgendeinem Grund zugänglich lassen möchten, um sie beispielsweise zum Senden von Erfolgen und Bestenlisten an eine andere soziale Plattform zu verwenden, können Sie das Google Play Spiele-Plug-in verwenden, ohne das Standard-Plug-in zu überschreiben. Aktion:

  1. PlayGamesPlatform.Activate nicht anrufen
  2. Wenn Xyz der Name einer Methode ist, die Sie für die Klasse Social aufrufen möchten, rufen Sie Social.Xyz nicht auf. Rufen Sie stattdessen PlayGamesPlatform.Instance.Xyz an.
  3. Verwende Social.Active nicht, wenn du mit Google Play Spiele interagierst. Verwenden Sie stattdessen PlayGamesPlatform.Instance.

Auf diese Weise können Sie Punktzahlen und Erfolge sogar gleichzeitig auf zwei oder mehr Social-Media-Plattformen einreichen:

    // Submit achievement to original default social platform
    Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);

    // Submit achievement to Google Play
    PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);

Anmeldedienst überprüfen

Beim Öffnen des Spiels wird automatisch über den Anmeldedienst versucht, eine Verbindung zu den Play-Spieldiensten herzustellen. Wenn die Verbindung hergestellt wurde, wird in Ihrem Spiel eine Anmeldeaufforderung angezeigt und Sie können das Google Play Spiele-Plug-in für Unity verwenden.

Wenn ein Nutzer Google Play Spiele auf seinem Gerät noch nie verwendet hat, wird er automatisch zum einmaligen Einrichtungsbildschirm weitergeleitet, um ein Play Spiele-Konto zu erstellen.

Prüfen Sie in der Methode Start Ihres Skripts das Ergebnis des automatischen Anmeldeversuchs, rufen Sie den Authentifizierungsstatus ab und deaktivieren Sie die Funktionen der Play-Spieldienste, wenn der Nutzer nicht angemeldet ist.

    using GooglePlayGames;

    public void Start() {
      PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
    }

    internal void ProcessAuthentication(SignInStatus status) {
      if (status == SignInStatus.Success) {
        // Continue with Play Games Services
      } else {
        // Disable your integration with Play Games Services or show a login button
        // to ask users to sign-in. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }
}

Der Ergebniscode ist ein Enum, mit dem Sie den Grund für einen Anmeldefehler ermitteln können.

Wenn du die Social-Media-Plattform von Unity lieber nutzen möchtest, kannst du alternativ den folgenden Code verwenden:

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Sie können erst dann Google Play Spiele API-Aufrufe ausführen, wenn Sie einen erfolgreichen Rückgabewert von Authenticate erhalten haben. Daher empfehlen wir, dass Spiele einen Stand-by-Bildschirm anzeigen, bis der Callback aufgerufen wird, damit Nutzer das Spiel erst nach Abschluss der Authentifizierung spielen können.

Serverauthentifizierungscodes abrufen

Um im Namen des aktuellen Spielers auf Google APIs auf einem Back-End-Webserver zuzugreifen, müssen Sie einen Authentifizierungscode von der Clientanwendung abrufen und an Ihre Webserveranwendung übergeben. Anschließend kann der Code gegen ein Zugriffstoken ausgetauscht werden, um die verschiedenen APIs aufzurufen. Informationen zum Workflow findest du unter Google Log-in für Websites.

So rufen Sie den serverseitigen Zugriffscode ab:

  1. Konfiguriere die Web-Client-ID der Webanwendung, die mit deinem Spiel in der Play Spiele Console verknüpft ist.

  2. Rufen Sie PlayGamesPlatform.Instance.RequestServerSideAccess auf, nachdem der Spieler authentifiziert wurde, um den serverseitigen Zugriffscode zu erhalten.

  3. Übergeben Sie diesen Code an Ihre Serveranwendung.

  PlayGamesPlatform.Instance.RequestServerSideAccess(
    /* forceRefreshToken= */ false,
    code -> {
      // send code to server
    });

Funktionen einrichten und hinzufügen