Freigeben über


Einrichten der PlayFab-Authentifizierung mit Steam und Unity

Dieses Tutorial führt Sie durch die Schritte für die Anmeldung bei PlayFab mithilfe von Steam über SteamWorks und Unity.

Voraussetzungen

Bevor Sie beginnen, sollten Sie über Folgendes verfügen:

Einrichten eines PlayFab-Titels

Um die Unterstützung für die Steam-Autorisierung zu aktivieren, erfordert PlayFab, dass Sie das Steam-Add-On aktivieren.

Wechseln Sie zu Ihrer Game Manager-Seite :

  1. Wählen Sie das Menüelement Add-Ons aus.
  2. Suchen Sie in der Liste der verfügbaren Add-Onsnach Steam , und wählen Sie den Titellink aus:

Registerkarte

  1. Geben Sie Ihre App-ID ein.
  2. Geben Sie den Web-API-Schlüssel ein.
  3. Wählen Sie dann Install Steam (Steam installieren) aus.

Installieren des Steam-Add-Ons für Game Manager

Damit wird das Einrichten eines PlayFab-Titels für die Steam-Integration abgeschlossen.

Einrichten eines Unity-Projekts

Laden Sie zunächst die neueste Version von Steamworks.NET von der Seite Releases herunter.

  • Rufen Sie die Unity-Paketversion des Release ab, und importieren Sie sie in das Projekt.
  • Nachdem Sie das Paket importiert haben, schließen Sie Unity.
  • Navigieren Sie zum Stammordner Project .
  • Suchen Sie die steam_appid.txt-Datei .
  • Öffnen Sie die Datei, und ersetzen Sie den App-ID-Wert durch Ihren eigenen Wert.

Unity-Projekt : AppId aktualisieren

Öffnen Sie Unity erneut, und erstellen Sie eine neue Szene.

Erstellen Sie in dieser Szene ein neues Gameobjekt namens Steam:

  1. Fügen Sie dem Gameobject eine SteamManager-Komponente hinzu. Diese Komponente ist Teil von Steamworks.Net.
  2. Erstellen Sie eine SteamScript-Komponente , und fügen Sie sie dem Gameobject hinzu.

Unity-Projekt: Hinzufügen eines Steam-Objekts

Das folgende Beispiel zeigt den Code für die SteamScript Komponente.

(Vielen Dank an Dylan Hunt für dieses Beispiel.)

// Import all the necessary namespaces
using System;
using System.Text;
using PlayFab;
using PlayFab.ClientModels;
using Steamworks;
using UnityEngine;

public class SteamScript : MonoBehaviour {
    //This method returns
    public string GetSteamAuthTicket() {
        byte[] ticketBlob = new byte[1024];
        uint ticketSize;

        // Retrieve ticket; hTicket should be a field in the class so you can use it to cancel the ticket later
        // When you pass an object, the object can be modified by the callee. This function modifies the byte array you've passed to it.
        HAuthTicket hTicket = SteamUser.GetAuthSessionTicket(ticketBlob, ticketBlob.Length, out ticketSize);

        // Resize the buffer to actual length
        Array.Resize(ref ticketBlob, (int)ticketSize);

        // Convert bytes to string
        StringBuilder sb = new StringBuilder();
        foreach (byte b in ticketBlob) {
            sb.AppendFormat("{0:x2}", b);
        }
        return sb.ToString();
    }

    public void OnGUI() {
        if (GUILayout.Button("Log In")) {
            if (SteamManager.Initialized) {
                // Execute PlayFab API call to log in with steam ticket
                PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest {
                    CreateAccount = true,
                    SteamTicket = GetSteamAuthTicket()
                }, OnComplete,OnFailed);
            }
        }
    }

    // Utility callbacks to log the result
    private void OnComplete(LoginResult obj) {
        Debug.Log("Success!");
    }

    private void OnFailed(PlayFabError error) {
        Debug.Log("Failed: " + error.GenerateErrorReport());
    }
}

Testen

Sie können direkt im Editor testen:

  1. Führen Sie die Szene aus, und wählen Sie die Schaltfläche Anmelden aus.
  2. Die Konsolenmeldung sollte nach einem Moment angezeigt werden, die das Authentifizierungsergebnis Success! angibt.

Unity test PlayFab login with Steam