Google Play Spiele für Unity einrichten und authentifizieren

In diesem Dokument wird beschrieben, wie Sie Ihr Unity-Projekt für die Verwendung des Google Play Games-Plug-ins für Unity einrichten. Sie erfahren, wie Sie das Plug-in installieren und Ihr Unity-Projekt konfigurieren. Außerdem wird beschrieben, wie Sie den Authentifizierungsdienst überprüfen.

Hinweis

Softwareanforderungen prüfen Richten Sie die Play Console ein und installieren Sie den Unity-Editor.

Plug‑in-Installation

So laden Sie das Google Play Games-Plug-in für Unity herunter und installieren es im Unity-Editor:

  1. Laden Sie das GitHub-Repository herunter.

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

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Unity-Projekt einrichten

So richten Sie ein Unity-Projekt in den Playereinstellungen ein:

  1. Öffnen Sie Ihr Spieleprojekt.

  2. Klicken Sie im Unity-Editor auf Assets > Import Package > Custom Package, um die Datei unitypackage in die Assets Ihres Projekts zu importieren.

  3. Achten Sie darauf, dass Ihre aktuelle Build-Plattform auf Android eingestellt ist.

    1. Klicken Sie im Hauptmenü auf Datei > Build-Einstellungen.

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

    3. Unter Window > Google Play Games sollte ein neuer Menüpunkt angezeigt werden. Wenn nicht, aktualisieren Sie die Assets, indem Sie auf Assets > Aktualisieren klicken, und versuchen Sie dann noch einmal, die Build-Plattform festzulegen.

  4. Klicken Sie im Unity-Editor auf File > Build Settings > Player Settings > Other Settings (Datei > Build-Einstellungen > Player-Einstellungen > Weitere Einstellungen).

  5. Wählen Sie im Feld Ziel-API-Level eine Version aus.

  6. Geben Sie im Feld Scripting backend (Scripting-Backend) IL2CPP ein.

  7. Wählen Sie im Feld Zielarchitekturen einen Wert aus.

  8. Notieren Sie sich den Paketnamen package_name.Sie können diese Informationen später verwenden.

Die Playereinstellungen in Ihrem Unity-Projekt
Die Player-Einstellungen in Ihrem Unity-Projekt.

Neuen Schlüsselspeicher erstellen

Zum Validieren Ihrer Anmeldedaten benötigen Sie einen Schlüssel. Gehen Sie so vor:

  1. Klicken Sie im Unity-Editor auf File > Build settings > Player settings (Datei > Build-Einstellungen > Player-Einstellungen).
  2. Klicken Sie im Bereich Veröffentlichungseinstellungen auf Keystore-Verwaltung.
    1. Klicken Sie im Fenster Keystore Manager auf Keystore > Create new > Anywhere (Keystore > Neu erstellen > Beliebiger Ort).
    2. Wählen Sie einen Ordner aus und geben Sie einen Namen für den Keystore ein.
    3. Geben Sie im Feld Passwort ein Passwort ein und bestätigen Sie es.
    4. Klicken Sie auf Schlüssel hinzufügen.

Notieren Sie sich den Ordnernamen. Sie können diesen Namen verwenden, um in Google Cloud Anmeldedaten zu erstellen.

Android-Ressourcen aus der Play Console kopieren

Für jede Auszeichnung, Bestenliste und jedes Ereignis, das Sie in der Play Console erstellen, ist eine Android-Ressource enthalten, die Sie beim Einrichten Ihres Unity-Projekts verwenden.

So erhalten Sie die Android-Ressourcen für Ihr Spiel:

  1. Öffnen Sie das Spiel in der Google Play Console.

  2. Klicken Sie auf der Seite Play-Spieldienste – Konfiguration (Nutzer gewinnen > Play-Spieldienste > Einrichtung und Verwaltung > Konfiguration) auf Ressourcen abrufen.

  3. Klicken Sie im Fenster Ressourcen auf den Tab Android(XML).

  4. Wählen Sie den Inhalt der Android-Ressourcen (AndroidManifest.xml) aus und kopieren Sie ihn.

Android-Ressourcen zu Ihrem Unity-Projekt hinzufügen

Fügen Sie Ihrem Unity-Projekt die folgenden Android-Ressourcen hinzu:

  1. Klicken Sie im Unity-Editor auf Window > Google Play Games > Setup > Android Setup (Fenster > Google Play Games > Einrichtung > Android-Einrichtung).

    • Geben Sie im Feld Verzeichnis zum Speichern von Konstanten den Ordnernamen für die Konstantendatei ein.
    • Geben Sie im Feld Konstantenklassenname den Namen der zu erstellenden C#-Klasse ein, einschließlich des Namespace.

      Wenn die C#-Klasse beispielsweise id.cs lautet und sich unter Assets > myproject > scripts > id.cs befindet, kann der Name der Konstantenklasse myproject.scripts.id lauten.

    • Fügen Sie im Feld Ressourcendefinition die Android-Ressourcendaten (AndroidManifest.xml-Datei) ein, die Sie aus der Google Play Console kopiert haben.

    • Optional: Geben Sie im Feld Client-ID die Client-ID der verknüpften Web-App ein.

      Informationen zum Abrufen der Client-ID für Ihr Spiel aus Google Cloud finden Sie unter Client-IDs erstellen.

      Dies ist nur erforderlich, wenn Sie ein webbasiertes Backend für Ihr Spiel haben und einen Serverautorisierungscode benötigen, der vom Backend-Server gegen ein Zugriffstoken eingetauscht werden kann, oder wenn Sie ein ID-Token für den Spieler benötigen, um andere API-Aufrufe auszuführen, die nicht zum Spiel gehören.

    • Klicken Sie 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.

  2. Klicken Sie im Unity-Editor auf Window > Google Play Games > Setup > Nearby Connections Setup (Fenster > Google Play Games > Einrichtung > Nearby Connections-Einrichtung).

    • Geben Sie im Feld Nearby Connection Service ID (Nearby Connection-Dienst-ID) die package_name ein.

      Verwenden Sie dieselbe package_name wie beim Einrichten des Unity-Projekts.

    • Klicken Sie auf Einrichten.

Plattform für soziale Medien auswählen

Das Google Play Games-Dienste-Plug-in implementiert das Social Interface von Unity, um die Kompatibilität mit Spielen zu gewährleisten, die dieses Interface bereits bei der Integration mit anderen Plattformen verwenden. Einige Funktionen sind jedoch nur in Play Spiele verfügbar und werden als Erweiterungen der von Unity bereitgestellten Standardschnittstelle für soziale Netzwerke angeboten.

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

Plug-in verwenden, ohne die Standardplattform für soziale Medien zu überschreiben

Wenn Sie PlayGamesPlatform.Activate aufrufen, werden die Google Play Games-Dienste zur Standardimplementierung Ihrer Social-Media-Plattform. Das bedeutet, dass das Google Play Games-Dienste-Plug-in statische Aufrufe von Methoden in Social und Social.Active ausführt. Das ist das erwartete Verhalten für die meisten Spiele, die das Plug-in verwenden.

Wenn Sie jedoch aus irgendeinem Grund die Standardimplementierung beibehalten möchten (z. B. um damit Erfolge und Bestenlisten an eine andere soziale Plattform zu senden), können Sie das Google Play Games-Dienste-Plug-in verwenden, ohne die Standardimplementierung zu überschreiben. Aktion:

  1. Rufen Sie die Methode PlayGamesPlatform.Activate auf.
  2. Wenn Xyz der Name einer Methode ist, die Sie für die Klasse Social aufrufen, rufen Sie Social.Xyz nicht auf. Rufen Sie stattdessen PlayGamesPlatform.Instance.Xyz auf.
  3. Verwenden Sie die Property PlayGamesPlatform.Instance anstelle von Social.Active, wenn Sie mit Google Play Games-Diensten interagieren.

So können Sie Ergebnisse und Erfolge gleichzeitig an zwei oder mehr soziale Plattformen senden:

    // 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);

Authentifizierungsdienst überprüfen

Beim Öffnen Ihres Spiels wird automatisch versucht, eine Verbindung zu den Play Games-Diensten über die Plattformauthentifizierung herzustellen. Wenn die Verbindung erfolgreich ist, wird in Ihrem Spiel eine Anmeldeaufforderung angezeigt und Sie können das Google Play Games-Dienste-Plug-in für Unity verwenden.

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

Hören Sie in der Methode Start Ihres Skripts auf das Ergebnis des automatischen Authentifizierungsversuchs, rufen Sie den Authentifizierungsstatus ab und deaktivieren Sie Funktionen der Play-Spieldienste, wenn der Nutzer nicht authentifiziert ist.

Wenn die Unity-Plug-in-Version vor v11 liegt, können Sie die Authentifizierungsfunktion nicht verwenden.

    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 authenticate. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

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

Wenn Sie lieber die Social-Plattform von Unity verwenden möchten, können Sie alternativ den folgenden Code verwenden:

  using GooglePlayGames;

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

Sie können erst dann Google Play Games-Dienste-API-Aufrufe ausführen, wenn Sie einen erfolgreichen Rückgabewert von Authenticate erhalten. Daher empfehlen wir, dass Spiele einen Standby-Bildschirm anzeigen, bis der Callback aufgerufen wird. So wird verhindert, dass Nutzer das Spiel starten können, bevor die Authentifizierung abgeschlossen ist.

Automatisch ausgelöste Profilerstellung verhindern

Sie können die automatisch ausgelösten Aufforderungen zur Profilerstellung über die Manifestdatei deaktivieren. So können Nutzer ohne Play Games-Dienste-Profil das Spiel weiterhin laden, ohne zur Erstellung eines Play Games-Dienste-Profils aufgefordert zu werden. Weitere Informationen finden Sie unter Optionen zur Profilerstellung.

Damit Sie diese Funktion nutzen können, müssen folgende Voraussetzungen erfüllt sein:

  • Auf dem Gerät ist für keines der angemeldeten Google-Konten ein Play Games-Profil vorhanden.
  • Ihr Spiel ist in das Play Games-Dienste-Unity-Plug‑in 2.1.0 oder höher eingebunden.
  1. Fügen Sie in der Datei AndroidManifest.xml dem Element <meta-data> das Tag com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION und dem Element <application> Attribute hinzu:

    <application>
        ...
        <meta-data
            android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION"
            android:value="true" />
        ...
    </application>

    Wenn Sie dieses Flag auf „true“ setzen, wird den Play Games-Diensten mitgeteilt, dass Ihr Spiel den Prozess zur Profilerstellung übernimmt. Folglich wird die Benutzeroberfläche zur Profilerstellung nicht automatisch für Nutzer auf dem Gerät angezeigt, die noch kein Play Games-Dienste-Profil haben.

  2. Wenn ein Nutzer aufgrund eines fehlenden Profils für Play Games-Dienste nicht authentifiziert ist, können Sie PlayGamesPlatform.Instance.IsAuthenticated() verwenden. Diese Methode gibt false zurück, da die Profilerstellung fehlschlägt. Um dieses Problem zu beheben, starten Sie die Profilerstellung mit dem Aufruf von PlayGamesPlatform.Instance.ManuallyAuthenticate().

    
    if (!PlayGamesPlatform.Instance.IsAuthenticated()) {
      // The user is unauthenticated, likely due to a missing Play Games profile.
      // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger
      // the profile creation UI.
      PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => {
        // ...
      });
    }
    

  3. Nachdem Sie das Unterdrückungs-Tag hinzugefügt haben, können Sie im logcat-Fenster überprüfen, ob es hinzugefügt wurde. Die logcat-Ausgabe enthält eine Meldung ähnlich der folgenden: „Game opted out of automatic profile creation prompt (using manifest)“ (Das Spiel hat die automatische Aufforderung zur Profilerstellung deaktiviert (über das Manifest)).

Die Play App-Signatur verwenden

Mit der Google Play App-Signatur verwaltet und schützt Google den Signaturschlüssel Ihrer App. Sie können die Google Play App-Signatur verwenden, um optimierte Vertriebs-Android App Bundles zu signieren. Ihr App-Signaturschlüssel wird in der sicheren Infrastruktur von Google gespeichert. Wenn Sie die Google Play App-Signatur verwenden möchten, müssen Sie zuerst eine AAB-Datei im Unity-Editor erstellen und herunterladen. Anschließend können Sie die AAB-Datei in die Play Console hochladen und einen Release für interne Tests erstellen.

AAB-Datei erstellen

So erstellen Sie eine AAB-Datei im Unity-Editor:

  1. Klicken Sie im Unity-Editor auf File > Build settings (Datei > Erstellungseinstellungen).
  2. Wählen Sie App-Bundle erstellen ( Google Play) aus.

    Weitere Informationen finden Sie unter Android Build Settings reference.

  3. Klicken Sie auf Erstellen.

  4. Laden Sie die AAB-Datei aus dem Unity-Editor herunter.

Internen Testrelease erstellen

So erstellen Sie einen Release für interne Tests und fügen Tester in der Play Console hinzu:

  1. Wählen Sie in der Google Play Console ein Spiel aus.
  2. Rufen Sie die Seite Testen und veröffentlichen auf (Testen > Interner Test).
  3. Klicken Sie auf Hochladen und wählen Sie die AAB-Datei aus.
  4. Geben Sie im Feld Release-Details einen Namen ein.
  5. Klicken Sie auf Weiter und sehen Sie sich die Release-Details an.
  6. Klicken Sie auf Speichern und veröffentlichen.
  7. Klicken Sie auf dem Tab Tester auf E-Mail-Liste erstellen, um bis zu 100 Tester hinzuzufügen.

    Weitere Informationen finden Sie unter Interner Test: Bis zu 100 Tester verwalten.

  8. Geben Sie unter URL oder E‑Mail-Adresse für Feedback eine Feedback-URL oder eine E‑Mail-Adresse für Feedback ein.

  9. Klicken Sie auf Speichern.

Anmeldedaten für die App-Signatur überprüfen

  1. Wählen Sie in der Google Play Console ein Spiel aus.
  2. Rufen Sie die Seite Testen und veröffentlichen (Einrichtung > App-Signatur) auf.
  3. Überprüfen Sie Ihre Anmeldedaten für die App-Signatur.

Projekt erstellen und ausführen

Sie können das Spielprojekt jetzt erstellen und ausführen. Wenn das Spiel gestartet wird, sehen Sie den automatischen Authentifizierungsversuch.

Sie benötigen ein physisches Android-Gerät mit aktiviertem USB-Debugging oder einen Emulator, auf dem das entwickelte Projekt ausgeführt werden kann.

Serverauthentifizierungscodes abrufen

Wenn Sie im Namen des aktuellen Spielers auf einem Backend-Webserver auf Google APIs zugreifen möchten, müssen Sie einen Authentifizierungscode von der Clientanwendung abrufen und an Ihre Webserveranwendung übergeben. Der Code kann dann gegen ein Zugriffstoken eingetauscht werden, um Aufrufe an die verschiedenen APIs zu senden. Informationen zum Ablauf finden Sie unter Mit Google anmelden.

So erhalten Sie den serverseitigen Zugangscode:

  1. Fügen Sie die Webclient-ID für Ihr Spiel in der Play Console hinzu.
    1. Wählen Sie in der Google Play Console Ihr Spiel aus.
    2. Klicken Sie auf der Seite Konfiguration (Mehr Nutzer gewinnen > Play-Spieldienste > Einrichtung und Verwaltung > Konfiguration) auf Anmeldedaten hinzufügen.
    3. Wählen Sie auf der Seite Anmeldedaten hinzufügen die Option Game Server aus.
    4. OAuth 2.0-Client-ID generieren
    5. Notieren Sie sich den Wert der Client-ID. Sie müssen diesen Wert später angeben.
  2. Fügen Sie die Web-Client-ID in Unity Hub hinzu.

    1. Richten Sie Google Play Games für Unity im Unity Hub ein und authentifizieren Sie sich.
    2. Klicken Sie im Unity Hub auf Window > Google Play Games > Setup > Android Setup (Fenster > Google Play Games > Einrichtung > Android-Einrichtung).
    3. Geben Sie den Wert der Client-ID ein.
  3. Server-Authentifizierungscode für zusätzliche Bereiche abrufen.

    C#

    using GooglePlayGames.BasicApi;
    
    // Define selectedScope having additional identity scopes.
    private List selectedScopes = new List();
    
    // Add scopes you want to request.
    selectedScopes.Add(AuthScope.OPEN_ID);
    selectedScopes.Add(AuthScope.PROFILE);
    selectedScopes.Add(AuthScope.EMAIL);
    
    // Call RequestServerSideAccess with additional scopes and retrieve
    // authcode and grantedscopes list.
    PlayGamesPlatform.Instance.RequestServerSideAccess(
        /* forceRefreshToken= */ false,selectedScopes
        (AuthResponse authResponse) =>
        {
        string authCode = authResponse.GetAuthCode();
        List grantedScopes = authResponse.GetGrantedScopes();
    
        // send authCode to server...
    });

Funktionen einrichten und hinzufügen