Freigeben über


Verwenden des Profils für erweiterte Bestenlisten

Mit PlayFab erstellen Sie in der Regel Bestenlisten mit den folgenden API-Methoden:

Das Ergebnis ist eine Liste von PlayerLeaderboardEntry-Objekten , die nur grundlegende Informationen über den Spieler und ihre Beziehung zur aktuellen Bestenliste enthalten.

Mit PlayFab können Sie jedoch auch PlayerProfileViewConstraints verwenden, um zusätzliche Informationen zu jedem Spieler zu erhalten.

Notiz

In diesem Beispiel wird davon ausgegangen, dass Sie bereits über einige Bestenlistendaten verfügen, mit denen Sie spielen können. Eine Methode zum Generieren einiger Testdaten finden Sie im Tutorial Zugreifen auf archivierte Turnierergebnisse .

Konfigurieren von Einschränkungen für die Spielerprofilansicht

Standardmäßig kann die Client-API nur den Anzeigenamen aus einem anderen Spielerprofil abrufen. In diesem Beispiel ermöglichen wir allen Spielern den Zugriff auf zusätzliche Informationen zu anderen Spielern in der Bestenliste.

Navigieren Sie zu Ihrem Titel Game Manager:

  1. Wählen Sie im Menü auf der linken Seite das Symbol Einstellungen aus.
  2. Titeleinstellungen auswählen
  3. Wählen Sie dann die Registerkarte Clientprofiloptionen aus.
  4. Vergewissern Sie sich, dass DisplayName ausgewählt ist.
  5. Stellen Sie sicher, dass die Avatar-URL ausgewählt ist.
  6. Übermitteln Sie Ihre Änderungen, indem Sie die Schaltfläche Clientprofiloptionen speichern auswählen.

Game Manager – Einstellungen – Clientprofiloptionen

Testen

Im vorherigen Schritt können Clientcode und AvatarUrl Profileinschränkungen verwendenDisplayName.

Im folgenden Beispiel wird gezeigt, wie Sie eine Bestenliste mithilfe der erwähnten Profildaten abrufen und drucken. Weitere Informationen finden Sie in den Codekommentaren.

private static async Task DoReadLeaderboard()
{
    // Get Leaderboard Request
    var result = await PlayFabClientAPI.GetLeaderboardAsync(new GetLeaderboardRequest()
    {
        // Specify your statistic name here
        StatisticName = "TestScore",
        // Override Player Profile View Constraints and fetch player DisplayName and AvatarUrl
        ProfileConstraints = new PlayerProfileViewConstraints()
        {
            ShowDisplayName = true,
            ShowAvatarUrl = true
        }
    });

    // Start printing the leaderboard
    Console.WriteLine("=== LEADERBOARD ===");

    if (result.Error != null)
    {
        // Handle error if any
        Console.WriteLine(result.Error.GenerateErrorReport());
    }
    else
    {
        // Traverse the leaderboard list
        foreach (var entry in result.Result.Leaderboard)
        {
            // Print regular leaderboard entry information
            Console.WriteLine($"{entry.Position + 1} {entry.PlayFabId} {entry.StatValue}");

            // Additionally print display name and avatar url that comes from player profile
            Console.WriteLine($"    {entry.Profile.DisplayName} | {entry.Profile.AvatarUrl}");
        }
    }
}

Notiz

Die einzelnen Profile-Felder sind nur verfügbar, wenn der Client sie explizit mithilfe von Profileinschränkungen anfragt. Beachten Sie außerdem, dass der API-Aufruf mit einem entsprechenden Fehler fehlschlägt, wenn bestimmte Profileinschränkungen im Game Manager nicht zulässig sind und ihr Client sie anfordert. Das Ergebnis sieht in etwa wie im folgenden Beispiel aus.

Ausgabe – Anzeigen der Bestenliste

Mit diesem Verfahren können Sie eine Handvoll Profilinformationen abrufen, einschließlich anderer Statistikwerte.