高度なランキングでのプロフィールの使用
PlayFab では通常、次の API メソッドを使ってランキングを構築します。
この結果は、プレイヤーと現在のランキングとの関係に関する基本的な情報が含まれる PlayerLeaderboardEntry オブジェクトの一覧です。
ただし、PlayFab では PlayerProfileViewConstraints を使って各プレイヤーに関する追加情報を取得できます。
注意
この例では、プレイするランキング データが既にいくつかあることを前提としています。 テスト データを生成するメソッドについては、「アーカイブ トーナメントの結果にアクセスする」チュートリアルをご覧ください。
プレイヤー プロフィール ビューの制約の構成
既定では、クライアント API は別のプレイヤー プロフィールの表示名のみ取得します。 この例では、ランキングにおける他のプレイヤーに関する追加情報へのアクセスをすべてのプレイヤーに許可します。
タイトル ゲーム マネージャーに移動します。
- メニューの左側にある [設定] アイコンを選択します。
- [Title settings (タイトル設定)] を選択します。
- 次に、[クライアント プロフィール オプション] タブを選択します。
- DisplayNameが選択されていることを確認します。
- アバター URLが選択されていることを確認します。
- [クライアント プロファイル オプションの保存] ボタンを選択して変更を送信します。
テスト
前の手順では、クライアント コードによる DisplayName
制約と AvatarUrl
プロファイル制約の使用が許可されます。
次のサンプルでは、言及されているプロフィール データを使ってランキングを取得および印刷する方法を示します。 詳しくは、コードのコメントをご覧ください。
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}");
}
}
}
注意
個々 のプロフィール フィールドは、クライアントがプロフィール制約の使用を明示的に要求する場合にのみ使用します。 さらに、ゲーム マネージャーで特定のプロファイルの制約が許可されていないにもかかわらず、クライアントが要求した場合、API 呼び出しが対応するエラーで失敗することに注意してください。 結果は以下の例のようになります。
この手法を使って、その他の統計値を含むいくつかのプロファイル情報を取得することができます。